stack_order is no longer needed for atomic-replace livepatches, as a single function can only be modified by a unique replace_set. To maintain backward compatibility, print a dummy value, as suggested by sashiko-bot.
Signed-off-by: Yafang Shao <[email protected]> Cc: Wardenjohn <[email protected]> --- .../ABI/removed/sysfs-kernel-livepatch | 9 +++ .../ABI/testing/sysfs-kernel-livepatch | 9 --- kernel/livepatch/core.c | 20 +----- .../testing/selftests/livepatch/test-sysfs.sh | 69 ------------------- 4 files changed, 12 insertions(+), 95 deletions(-) create mode 100644 Documentation/ABI/removed/sysfs-kernel-livepatch diff --git a/Documentation/ABI/removed/sysfs-kernel-livepatch b/Documentation/ABI/removed/sysfs-kernel-livepatch new file mode 100644 index 000000000000..72c1ce0ea864 --- /dev/null +++ b/Documentation/ABI/removed/sysfs-kernel-livepatch @@ -0,0 +1,9 @@ +What: /sys/kernel/livepatch/<patch>/stack_order +Date: Jan 2025 +KernelVersion: 6.14.0 +Description: + This attribute specifies the sequence in which live patch modules + are applied to the system. If multiple live patches modify the same + function, the implementation with the biggest 'stack_order' number + is used, unless a transition is currently in progress. + diff --git a/Documentation/ABI/testing/sysfs-kernel-livepatch b/Documentation/ABI/testing/sysfs-kernel-livepatch index 6d75235a6a2e..9d356d8b8c75 100644 --- a/Documentation/ABI/testing/sysfs-kernel-livepatch +++ b/Documentation/ABI/testing/sysfs-kernel-livepatch @@ -54,15 +54,6 @@ Contact: [email protected] Description: An attribute to show the replace_set of this livepatch. -What: /sys/kernel/livepatch/<patch>/stack_order -Date: Jan 2025 -KernelVersion: 6.14.0 -Description: - This attribute specifies the sequence in which live patch modules - are applied to the system. If multiple live patches modify the same - function, the implementation with the biggest 'stack_order' number - is used, unless a transition is currently in progress. - What: /sys/kernel/livepatch/<patch>/<object> Date: Nov 2014 KernelVersion: 3.19.0 diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 361999e5ce3d..c73eccd2cd13 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c @@ -330,7 +330,7 @@ int klp_apply_section_relocs(struct module *pmod, Elf_Shdr *sechdrs, * /sys/kernel/livepatch/<patch>/transition * /sys/kernel/livepatch/<patch>/force * /sys/kernel/livepatch/<patch>/replace_set - * /sys/kernel/livepatch/<patch>/stack_order + * /sys/kernel/livepatch/<patch>/stack_order <deprecated> * /sys/kernel/livepatch/<patch>/<object> * /sys/kernel/livepatch/<patch>/<object>/patched * /sys/kernel/livepatch/<patch>/<object>/<function,sympos> @@ -436,25 +436,11 @@ static ssize_t replace_set_show(struct kobject *kobj, return sysfs_emit(buf, "%u\n", patch->replace_set); } +/* This interface is deprecated and will be removed in the next release */ static ssize_t stack_order_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { - struct klp_patch *patch, *this_patch; - int stack_order = 0; - - this_patch = container_of(kobj, struct klp_patch, kobj); - - mutex_lock(&klp_mutex); - - klp_for_each_patch(patch) { - stack_order++; - if (patch == this_patch) - break; - } - - mutex_unlock(&klp_mutex); - - return sysfs_emit(buf, "%d\n", stack_order); + return sysfs_emit(buf, "-1\n"); } static struct kobj_attribute enabled_kobj_attr = __ATTR_RW(enabled); diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testing/selftests/livepatch/test-sysfs.sh index 58fe1d96997c..0c31759f34f6 100755 --- a/tools/testing/selftests/livepatch/test-sysfs.sh +++ b/tools/testing/selftests/livepatch/test-sysfs.sh @@ -21,8 +21,6 @@ check_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--" check_sysfs_value "$MOD_LIVEPATCH" "enabled" "1" check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------" check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--" -check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" -check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH" "transition" "0" check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" @@ -135,71 +133,4 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition livepatch: '$MOD_LIVEPATCH': unpatching complete % rmmod $MOD_LIVEPATCH" -start_test "sysfs test stack_order value" - -load_lp $MOD_LIVEPATCH - -check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" - -load_lp $MOD_LIVEPATCH2 - -check_sysfs_value "$MOD_LIVEPATCH2" "stack_order" "2" - -load_lp $MOD_LIVEPATCH3 - -check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "3" - -disable_lp $MOD_LIVEPATCH2 -unload_lp $MOD_LIVEPATCH2 - -check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" -check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "2" - -disable_lp $MOD_LIVEPATCH3 -unload_lp $MOD_LIVEPATCH3 - -disable_lp $MOD_LIVEPATCH -unload_lp $MOD_LIVEPATCH - -check_result "% insmod test_modules/$MOD_LIVEPATCH.ko -livepatch: enabling patch '$MOD_LIVEPATCH' -livepatch: '$MOD_LIVEPATCH': initializing patching transition -livepatch: '$MOD_LIVEPATCH': starting patching transition -livepatch: '$MOD_LIVEPATCH': completing patching transition -livepatch: '$MOD_LIVEPATCH': patching complete -% insmod test_modules/$MOD_LIVEPATCH2.ko -livepatch: enabling patch '$MOD_LIVEPATCH2' -livepatch: '$MOD_LIVEPATCH2': initializing patching transition -$MOD_LIVEPATCH2: pre_patch_callback: vmlinux -livepatch: '$MOD_LIVEPATCH2': starting patching transition -livepatch: '$MOD_LIVEPATCH2': completing patching transition -$MOD_LIVEPATCH2: post_patch_callback: vmlinux -livepatch: '$MOD_LIVEPATCH2': patching complete -% insmod test_modules/$MOD_LIVEPATCH3.ko -livepatch: enabling patch '$MOD_LIVEPATCH3' -livepatch: '$MOD_LIVEPATCH3': initializing patching transition -livepatch: '$MOD_LIVEPATCH3': starting patching transition -livepatch: '$MOD_LIVEPATCH3': completing patching transition -livepatch: '$MOD_LIVEPATCH3': patching complete -% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH2/enabled -livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition -$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux -livepatch: '$MOD_LIVEPATCH2': starting unpatching transition -livepatch: '$MOD_LIVEPATCH2': completing unpatching transition -$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux -livepatch: '$MOD_LIVEPATCH2': unpatching complete -% rmmod $MOD_LIVEPATCH2 -% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH3/enabled -livepatch: '$MOD_LIVEPATCH3': initializing unpatching transition -livepatch: '$MOD_LIVEPATCH3': starting unpatching transition -livepatch: '$MOD_LIVEPATCH3': completing unpatching transition -livepatch: '$MOD_LIVEPATCH3': unpatching complete -% rmmod $MOD_LIVEPATCH3 -% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled -livepatch: '$MOD_LIVEPATCH': initializing unpatching transition -livepatch: '$MOD_LIVEPATCH': starting unpatching transition -livepatch: '$MOD_LIVEPATCH': completing unpatching transition -livepatch: '$MOD_LIVEPATCH': unpatching complete -% rmmod $MOD_LIVEPATCH" - exit 0 -- 2.52.0
