]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
selftests: net: lib: Do not overwrite error messages
authorIdo Schimmel <idosch@nvidia.com>
Sun, 16 Nov 2025 08:10:29 +0000 (10:10 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 18 Nov 2025 03:32:12 +0000 (19:32 -0800)
commitbed22c7b90af732978715a1789bca1c3cfa245a6
treeb1444d7e72ede41b6f886d7e5452d1a2802e3e55
parentda02a1824884d6c84c5e5b5ac373b0c9e3288ec2
selftests: net: lib: Do not overwrite error messages

ret_set_ksft_status() calls ksft_status_merge() with the current return
status and the last one. It treats a non-zero return code from
ksft_status_merge() as an indication that the return status was
overwritten by the last one and therefore overwrites the return message
with the last one.

Currently, ksft_status_merge() returns a non-zero return code even if
the current return status and the last one are equal. This results in
return messages being overwritten which is counter-productive since we
are more interested in the first failure message and not the last one.

Fix by changing ksft_status_merge() to only return a non-zero return
code if the current return status was actually changed.

Add a test case which checks that the first error message is not
overwritten.

Before:

 # ./lib_sh_test.sh
 [...]
 TEST: RET tfail2 tfail -> fail                                      [FAIL]
        retmsg=tfail expected tfail2
 [...]
 # echo $?
 1

After:

 # ./lib_sh_test.sh
 [...]
 TEST: RET tfail2 tfail -> fail                                      [ OK ]
 [...]
 # echo $?
 0

Fixes: 596c8819cb78 ("selftests: forwarding: Have RET track kselftest framework constants")
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20251116081029.69112-1-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/forwarding/lib_sh_test.sh
tools/testing/selftests/net/lib.sh