1 #ifndef _LIVEPATCH_CORE_H
2 #define _LIVEPATCH_CORE_H
4 #include <linux/livepatch.h>
6 extern struct mutex klp_mutex;
8 static inline bool klp_is_object_loaded(struct klp_object *obj)
10 return !obj->name || obj->mod;
13 static inline int klp_pre_patch_callback(struct klp_object *obj)
17 ret = (obj->callbacks.pre_patch) ?
18 (*obj->callbacks.pre_patch)(obj) : 0;
20 obj->callbacks.post_unpatch_enabled = !ret;
25 static inline void klp_post_patch_callback(struct klp_object *obj)
27 if (obj->callbacks.post_patch)
28 (*obj->callbacks.post_patch)(obj);
31 static inline void klp_pre_unpatch_callback(struct klp_object *obj)
33 if (obj->callbacks.pre_unpatch)
34 (*obj->callbacks.pre_unpatch)(obj);
37 static inline void klp_post_unpatch_callback(struct klp_object *obj)
39 if (obj->callbacks.post_unpatch_enabled &&
40 obj->callbacks.post_unpatch)
41 (*obj->callbacks.post_unpatch)(obj);
44 #endif /* _LIVEPATCH_CORE_H */