]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/livepatch.h
Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[karo-tx-linux.git] / include / linux / livepatch.h
index 31db7a05dd369094dea01c1ad109e1715f936c75..a8828652f79428dfb888121489e457fe5c13bd5b 100644 (file)
@@ -37,8 +37,9 @@ enum klp_state {
  * struct klp_func - function structure for live patching
  * @old_name:  name of the function to be patched
  * @new_func:  pointer to the patched function code
- * @old_addr:  a hint conveying at what address the old function
- *             can be found (optional, vmlinux patches only)
+ * @old_sympos: a hint indicating which symbol position the old function
+ *             can be found (optional)
+ * @old_addr:  the address of the function being patched
  * @kobj:      kobject for sysfs resources
  * @state:     tracks function-level patch application state
  * @stack_node:        list node for klp_ops func_stack list
@@ -48,16 +49,16 @@ struct klp_func {
        const char *old_name;
        void *new_func;
        /*
-        * The old_addr field is optional and can be used to resolve
-        * duplicate symbol names in the vmlinux object.  If this
-        * information is not present, the symbol is located by name
-        * with kallsyms. If the name is not unique and old_addr is
-        * not provided, the patch application fails as there is no
-        * way to resolve the ambiguity.
+        * The old_sympos field is optional and can be used to resolve
+        * duplicate symbol names in livepatch objects. If this field is zero,
+        * it is expected the symbol is unique, otherwise patching fails. If
+        * this value is greater than zero then that occurrence of the symbol
+        * in kallsyms for the given object is used.
         */
-       unsigned long old_addr;
+       unsigned long old_sympos;
 
        /* internal */
+       unsigned long old_addr;
        struct kobject kobj;
        enum klp_state state;
        struct list_head stack_node;
@@ -66,8 +67,7 @@ struct klp_func {
 /**
  * struct klp_reloc - relocation structure for live patching
  * @loc:       address where the relocation will be written
- * @val:       address of the referenced symbol (optional,
- *             vmlinux patches only)
+ * @sympos:    position in kallsyms to disambiguate symbols (optional)
  * @type:      ELF relocation type
  * @name:      name of the referenced symbol (for lookup/verification)
  * @addend:    offset from the referenced symbol
@@ -75,7 +75,7 @@ struct klp_func {
  */
 struct klp_reloc {
        unsigned long loc;
-       unsigned long val;
+       unsigned long sympos;
        unsigned long type;
        const char *name;
        int addend;