root/kernel/livepatch/patch.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _LIVEPATCH_PATCH_H
   3 #define _LIVEPATCH_PATCH_H
   4 
   5 #include <linux/livepatch.h>
   6 #include <linux/list.h>
   7 #include <linux/ftrace.h>
   8 
   9 /**
  10  * struct klp_ops - structure for tracking registered ftrace ops structs
  11  *
  12  * A single ftrace_ops is shared between all enabled replacement functions
  13  * (klp_func structs) which have the same old_func.  This allows the switch
  14  * between function versions to happen instantaneously by updating the klp_ops
  15  * struct's func_stack list.  The winner is the klp_func at the top of the
  16  * func_stack (front of the list).
  17  *
  18  * @node:       node for the global klp_ops list
  19  * @func_stack: list head for the stack of klp_func's (active func is on top)
  20  * @fops:       registered ftrace ops struct
  21  */
  22 struct klp_ops {
  23         struct list_head node;
  24         struct list_head func_stack;
  25         struct ftrace_ops fops;
  26 };
  27 
  28 struct klp_ops *klp_find_ops(void *old_func);
  29 
  30 int klp_patch_object(struct klp_object *obj);
  31 void klp_unpatch_object(struct klp_object *obj);
  32 void klp_unpatch_objects(struct klp_patch *patch);
  33 void klp_unpatch_objects_dynamic(struct klp_patch *patch);
  34 
  35 #endif /* _LIVEPATCH_PATCH_H */

/* [<][>][^][v][top][bottom][index][help] */