]>
git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/blob - kernel/livepatch/patch.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LIVEPATCH_PATCH_H
3 #define _LIVEPATCH_PATCH_H
5 #include <linux/livepatch.h>
6 #include <linux/list.h>
7 #include <linux/ftrace.h>
10 * struct klp_ops - structure for tracking registered ftrace ops structs
12 * A single ftrace_ops is shared between all enabled replacement functions
13 * (klp_func structs) which have the same old_func. This allows the switch
14 * between function versions to happen instantaneously by updating the klp_ops
15 * struct's func_stack list. The winner is the klp_func at the top of the
16 * func_stack (front of the list).
18 * @node: node for the global klp_ops list
19 * @func_stack: list head for the stack of klp_func's (active func is on top)
20 * @fops: registered ftrace ops struct
23 struct list_head node
;
24 struct list_head func_stack
;
25 struct ftrace_ops fops
;
28 struct klp_ops
*klp_find_ops(void *old_func
);
30 int klp_patch_object(struct klp_object
*obj
);
31 void klp_unpatch_object(struct klp_object
*obj
);
32 void klp_unpatch_objects(struct klp_patch
*patch
);
33 void klp_unpatch_objects_dynamic(struct klp_patch
*patch
);
35 #endif /* _LIVEPATCH_PATCH_H */