History

livepatch: move patching functions into patch.c

Move functions related to the actual patching of functions and objects into a new patch.c file.

Josh Poimboeuf committed 9 years ago

Commit c349cdc1 parent aa82dc34 files · +247 −202Browse files

Showing the changes to kernel/livepatch/patch.h (1 of 4 files). Show all

Unified · Split

kernel/livepatch/patch.h+32−0
@@ -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 */