Merge branch 'work.sane_pwd' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / kernel / livepatch / patch.h
CommitLineData
c349cdca
JP
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 */
21struct klp_ops {
22 struct list_head node;
23 struct list_head func_stack;
24 struct ftrace_ops fops;
25};
26
27struct klp_ops *klp_find_ops(unsigned long old_addr);
28
29int klp_patch_object(struct klp_object *obj);
30void klp_unpatch_object(struct klp_object *obj);
d83a7cb3 31void klp_unpatch_objects(struct klp_patch *patch);
c349cdca
JP
32
33#endif /* _LIVEPATCH_PATCH_H */