Move functions related to the actual patching of functions and objects into a new patch.c file.
Showing the changes to kernel/livepatch/patch.h (1 of 4 files). Show all
Unified · Split
| @@ -0,0 +1,32 @@ | |||
| 1 | #ifndef _LIVEPATCH_PATCH_H | ||
| 2 | #define _LIVEPATCH_PATCH_H | ||
| 3 | |||
| 4 | #include <linux/livepatch.h> | ||
| 5 | #include <linux/list.h> | ||
| 6 | #include <linux/ftrace.h> | ||
| 7 | |||
| 8 | /** | ||
| 9 | * struct klp_ops - structure for tracking registered ftrace ops structs | ||
| 10 | * | ||
| 11 | * A single ftrace_ops is shared between all enabled replacement functions | ||
| 12 | * (klp_func structs) which have the same old_addr. This allows the switch | ||
| 13 | * between function versions to happen instantaneously by updating the klp_ops | ||
| 14 | * struct's func_stack list. The winner is the klp_func at the top of the | ||
| 15 | * func_stack (front of the list). | ||
| 16 | * | ||
| 17 | * @node: node for the global klp_ops list | ||
| 18 | * @func_stack: list head for the stack of klp_func's (active func is on top) | ||
| 19 | * @fops: registered ftrace ops struct | ||
| 20 | */ | ||
| 21 | struct klp_ops { | ||
| 22 | struct list_head node; | ||
| 23 | struct list_head func_stack; | ||
| 24 | struct ftrace_ops fops; | ||
| 25 | }; | ||
| 26 | |||
| 27 | struct klp_ops *klp_find_ops(unsigned long old_addr); | ||
| 28 | |||
| 29 | int klp_patch_object(struct klp_object *obj); | ||
| 30 | void klp_unpatch_object(struct klp_object *obj); | ||
| 31 | |||
| 32 | #endif /* _LIVEPATCH_PATCH_H */ | ||