xref: /openbmc/linux/kernel/livepatch/core.h (revision 5aaf1ab5)
110517429SJiri Kosina #ifndef _LIVEPATCH_CORE_H
210517429SJiri Kosina #define _LIVEPATCH_CORE_H
310517429SJiri Kosina 
493862e38SJoe Lawrence #include <linux/livepatch.h>
593862e38SJoe Lawrence 
610517429SJiri Kosina extern struct mutex klp_mutex;
710517429SJiri Kosina 
893862e38SJoe Lawrence static inline bool klp_is_object_loaded(struct klp_object *obj)
993862e38SJoe Lawrence {
1093862e38SJoe Lawrence 	return !obj->name || obj->mod;
1193862e38SJoe Lawrence }
1293862e38SJoe Lawrence 
1393862e38SJoe Lawrence static inline int klp_pre_patch_callback(struct klp_object *obj)
1493862e38SJoe Lawrence {
155aaf1ab5SPetr Mladek 	int ret = 0;
1693862e38SJoe Lawrence 
175aaf1ab5SPetr Mladek 	if (obj->callbacks.pre_patch)
185aaf1ab5SPetr Mladek 		ret = (*obj->callbacks.pre_patch)(obj);
1993862e38SJoe Lawrence 
2093862e38SJoe Lawrence 	obj->callbacks.post_unpatch_enabled = !ret;
2193862e38SJoe Lawrence 
2293862e38SJoe Lawrence 	return ret;
2393862e38SJoe Lawrence }
2493862e38SJoe Lawrence 
2593862e38SJoe Lawrence static inline void klp_post_patch_callback(struct klp_object *obj)
2693862e38SJoe Lawrence {
2793862e38SJoe Lawrence 	if (obj->callbacks.post_patch)
2893862e38SJoe Lawrence 		(*obj->callbacks.post_patch)(obj);
2993862e38SJoe Lawrence }
3093862e38SJoe Lawrence 
3193862e38SJoe Lawrence static inline void klp_pre_unpatch_callback(struct klp_object *obj)
3293862e38SJoe Lawrence {
3393862e38SJoe Lawrence 	if (obj->callbacks.pre_unpatch)
3493862e38SJoe Lawrence 		(*obj->callbacks.pre_unpatch)(obj);
3593862e38SJoe Lawrence }
3693862e38SJoe Lawrence 
3793862e38SJoe Lawrence static inline void klp_post_unpatch_callback(struct klp_object *obj)
3893862e38SJoe Lawrence {
3993862e38SJoe Lawrence 	if (obj->callbacks.post_unpatch_enabled &&
4093862e38SJoe Lawrence 	    obj->callbacks.post_unpatch)
4193862e38SJoe Lawrence 		(*obj->callbacks.post_unpatch)(obj);
425aaf1ab5SPetr Mladek 
435aaf1ab5SPetr Mladek 	obj->callbacks.post_unpatch_enabled = false;
4493862e38SJoe Lawrence }
4593862e38SJoe Lawrence 
4610517429SJiri Kosina #endif /* _LIVEPATCH_CORE_H */
47