Re: [PATCH] selftests: livepatch: set LC_ALL=C to fix locale-dependent test failure

Qiang Ma <[email protected]> Wed, 27 May 2026 21:19:35 +0800
Newsgroups org.kernel.vger.live-patching,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Message-ID <C0D6799DFB309F26+b1597426-6523-47c7-8e22-713819e31f65@uniontech.com>
在 2026/5/27 20:09, Marcos Paulo de Souza 写道:
> On Wed, 2026-05-27 at 17:59 +0800, Qiang Ma wrote:
>> When executing the command
>> "make -C tools/testing/selftests TARGETS=livepatch run_tests",
>> the following error message was reported.
>>
>> TEST: livepatch interaction with ftrace_enabled sysctl ... not ok
>> ...
>> livepatch: sysctlo
>> : setting key "kernel.ftrace_enabled": Device or resource busy
>> livepatch: sysctl: setting key "kernel.ftrace_enabled": 设备或资源忙
>> ...
>> ERROR: livepatch kselftest(s) failed
>> not ok 5 selftests: livepatch: test-ftrace.sh # exit=1
>>
>> To fix it, set LC_ALL=C.
> Would you mind adding more context here? Can you point exactly why is
> this failing inside test-ftrace.sh script?
In the check_result(), the values of  result  and expect are compared.
In the expect value, one part is
"livepatch: sysctl: setting key \"kernel.ftrace_enabled\": Device or 
resource busy".
However, the actual value of result obtained from dmesg is
"[  220.947876] livepatch: sysctl: 设置键 "kernel.ftrace_enabled": 
设备或资源忙".

The comparison is different, so it directly enters the final 'else' branch.
Finally, the 'else' branch prints the difference between result and expect:

# --- expected
# +++ result
# @@ -16,7 +16,7 @@ livepatch: 'test_klp_livepatch': initial # 
livepatch: 'test_klp_livepatch': starting patching transition
#  livepatch: 'test_klp_livepatch': completing patching transition
#  livepatch: 'test_klp_livepatch': patching complete
# -livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or 
resource busy
# +livepatch: sysctl: Set key "kernel.ftrace_enabled": Device or 
resource is busy #  % echo 0 > 
/sys/kernel/livepatch/test_klp_livepatch/enabled
#  livepatch: 'test_klp_livepatch': initializing unpatching transition
#  livepatch: 'test_klp_livepatch': starting unpatching transition
>
> Have you double checked if you had any previous loaded livepatches why
> trying to disable/enable livepatching?
>
> I'll test in my environment, but I'm pretty sure that it used to work
> not so long ago.
>
>> Signed-off-by: Qiang Ma <[email protected]>
>> ---
>>   tools/testing/selftests/livepatch/functions.sh | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/tools/testing/selftests/livepatch/functions.sh
>> b/tools/testing/selftests/livepatch/functions.sh
>> index 8ec0cb64ad94..ecf27c1120f1 100644
>> --- a/tools/testing/selftests/livepatch/functions.sh
>> +++ b/tools/testing/selftests/livepatch/functions.sh
>> @@ -4,6 +4,8 @@
>>   
>>   # Shell functions for the rest of the scripts.
>>   
>> +export LC_ALL=C
>> +
>>   MAX_RETRIES=600
>>   RETRY_INTERVAL=".1"	# seconds
>>   SYSFS_KERNEL_DIR="/sys/kernel"