[PATCH net-next v2] selftests: net: exit with test failure status

From: Hangbin Liu

Date: Sun Oct 18 2026 - 20:41:59 EST


From: Hangbin Liu <liuhangbin@xxxxxxxxxx>

The changed four tests can print [FAIL] subtests while still exiting with
status 0. Their log_test(), aka log_test_expected() in lib.sh, helpers
record a failure in ret, but the scripts never propagate ret to the exit
code, so a kselftest runner treats the run as a pass.

Initialize ret and exit with it at the end of each script so failed
subtests are reflected in the exit status.

Signed-off-by: Hangbin Liu <liuhangbin@xxxxxxxxxx>
---
The patch doesn't fix a regression, nothing is failing (or passing when it
shouldn't) because of it. So target the patch to net-next.
---
Changes in v2:
- Also update fib_nexthop_multiprefix.sh (Ido Schimmel)
- Link to v1: https://lore.kernel.org/r/20261014-self_ret-v1-1-6b5a95ba6106@xxxxxxxxxx

To: "David S. Miller" <davem@xxxxxxxxxxxxx>
To: Eric Dumazet <edumazet@xxxxxxxxxx>
To: Jakub Kicinski <kuba@xxxxxxxxxx>
To: Paolo Abeni <pabeni@xxxxxxxxxx>
To: Simon Horman <horms@xxxxxxxxxx>
To: Shuah Khan <shuah@xxxxxxxxxx>
To: David Ahern <dsahern@xxxxxxxxxx>
To: Ido Schimmel <idosch@xxxxxxxxxx>
Cc: Hangbin Liu <hangbin.liu@xxxxxxxxx>
Cc: netdev@xxxxxxxxxxxxxxx
Cc: linux-kselftest@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
---
tools/testing/selftests/net/fdb_flush.sh | 3 +++
tools/testing/selftests/net/fib-onlink-tests.sh | 3 +++
tools/testing/selftests/net/fib_nexthop_multiprefix.sh | 1 +
tools/testing/selftests/net/l2tp.sh | 3 +++
4 files changed, 10 insertions(+)

diff --git a/tools/testing/selftests/net/fdb_flush.sh b/tools/testing/selftests/net/fdb_flush.sh
index 4965e52d5ef5..0827fdd60f8c 100755
--- a/tools/testing/selftests/net/fdb_flush.sh
+++ b/tools/testing/selftests/net/fdb_flush.sh
@@ -6,6 +6,7 @@
# some combinations of arguments.

source lib.sh
+ret=0

FLUSH_BY_STATE_TESTS="
vxlan_test_flush_by_permanent
@@ -778,3 +779,5 @@ for t in $TESTS
do
setup; $t; cleanup;
done
+
+exit $ret
diff --git a/tools/testing/selftests/net/fib-onlink-tests.sh b/tools/testing/selftests/net/fib-onlink-tests.sh
index a26075abf7d2..325da693c918 100755
--- a/tools/testing/selftests/net/fib-onlink-tests.sh
+++ b/tools/testing/selftests/net/fib-onlink-tests.sh
@@ -6,6 +6,7 @@
source lib.sh
PAUSE_ON_FAIL=${PAUSE_ON_FAIL:=no}
VERBOSE=0
+ret=0

# Network interfaces
# - odd in current namespace; even in peer ns
@@ -473,3 +474,5 @@ if [ "$TESTS" != "none" ]; then
printf "\nTests passed: %3d\n" ${nsuccess}
printf "Tests failed: %3d\n" ${nfail}
fi
+
+exit $ret
diff --git a/tools/testing/selftests/net/fib_nexthop_multiprefix.sh b/tools/testing/selftests/net/fib_nexthop_multiprefix.sh
index bd0b8a053ea1..2671cff270e5 100755
--- a/tools/testing/selftests/net/fib_nexthop_multiprefix.sh
+++ b/tools/testing/selftests/net/fib_nexthop_multiprefix.sh
@@ -269,3 +269,4 @@ if [ $ret -eq 0 ]; then
fi

cleanup
+exit $ret
diff --git a/tools/testing/selftests/net/l2tp.sh b/tools/testing/selftests/net/l2tp.sh
index 41e8b19d1bd3..de4b5da2da1b 100755
--- a/tools/testing/selftests/net/l2tp.sh
+++ b/tools/testing/selftests/net/l2tp.sh
@@ -16,6 +16,7 @@
source lib.sh
VERBOSE=0
PAUSE_ON_FAIL=no
+ret=0

which ping6 > /dev/null 2>&1 && ping6=$(which ping6) || ping6=$(which ping)

@@ -357,3 +358,5 @@ cleanup

printf "\nTests passed: %3d\n" ${nsuccess}
printf "Tests failed: %3d\n" ${nfail}
+
+exit $ret

---
base-commit: 98c2ad4f5d805dbc1ea436a334ee59311806a48c
change-id: 20261014-self_ret-83b030f32ba3

Best regards,
--
Hangbin Liu <liuhangbin@xxxxxxxxxx>