aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/ABI/testing/sysfs-kernel-livepatch6
-rw-r--r--kernel/livepatch/core.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/Documentation/ABI/testing/sysfs-kernel-livepatch b/Documentation/ABI/testing/sysfs-kernel-livepatch
index 5bf42a840b22..da87f43aec58 100644
--- a/Documentation/ABI/testing/sysfs-kernel-livepatch
+++ b/Documentation/ABI/testing/sysfs-kernel-livepatch
@@ -33,7 +33,7 @@ Description:
33 The object directory contains subdirectories for each function 33 The object directory contains subdirectories for each function
34 that is patched within the object. 34 that is patched within the object.
35 35
36What: /sys/kernel/livepatch/<patch>/<object>/<function> 36What: /sys/kernel/livepatch/<patch>/<object>/<function,sympos>
37Date: Nov 2014 37Date: Nov 2014
38KernelVersion: 3.19.0 38KernelVersion: 3.19.0
39Contact: live-patching@vger.kernel.org 39Contact: live-patching@vger.kernel.org
@@ -41,4 +41,8 @@ Description:
41 The function directory contains attributes regarding the 41 The function directory contains attributes regarding the
42 properties and state of the patched function. 42 properties and state of the patched function.
43 43
44 The directory name contains the patched function name and a
45 sympos number corresponding to the nth occurrence of the symbol
46 name in kallsyms for the patched object.
47
44 There are currently no such attributes. 48 There are currently no such attributes.
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index e842534d3493..94893e844e44 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -535,7 +535,7 @@ EXPORT_SYMBOL_GPL(klp_enable_patch);
535 * /sys/kernel/livepatch/<patch> 535 * /sys/kernel/livepatch/<patch>
536 * /sys/kernel/livepatch/<patch>/enabled 536 * /sys/kernel/livepatch/<patch>/enabled
537 * /sys/kernel/livepatch/<patch>/<object> 537 * /sys/kernel/livepatch/<patch>/<object>
538 * /sys/kernel/livepatch/<patch>/<object>/<func> 538 * /sys/kernel/livepatch/<patch>/<object>/<function,sympos>
539 */ 539 */
540 540
541static ssize_t enabled_store(struct kobject *kobj, struct kobj_attribute *attr, 541static ssize_t enabled_store(struct kobject *kobj, struct kobj_attribute *attr,
@@ -680,8 +680,14 @@ static int klp_init_func(struct klp_object *obj, struct klp_func *func)
680 INIT_LIST_HEAD(&func->stack_node); 680 INIT_LIST_HEAD(&func->stack_node);
681 func->state = KLP_DISABLED; 681 func->state = KLP_DISABLED;
682 682
683 /* The format for the sysfs directory is <function,sympos> where sympos
684 * is the nth occurrence of this symbol in kallsyms for the patched
685 * object. If the user selects 0 for old_sympos, then 1 will be used
686 * since a unique symbol will be the first occurrence.
687 */
683 return kobject_init_and_add(&func->kobj, &klp_ktype_func, 688 return kobject_init_and_add(&func->kobj, &klp_ktype_func,
684 &obj->kobj, "%s", func->old_name); 689 &obj->kobj, "%s,%lu", func->old_name,
690 func->old_sympos ? func->old_sympos : 1);
685} 691}
686 692
687/* parts of the initialization that is done only when the object is loaded */ 693/* parts of the initialization that is done only when the object is loaded */