selftests: net: lib.sh: Don't defer failed commands

Usually the autodefer helpers in lib.sh are expected to be run in context
where success is the expected outcome. However when using them for feature
detection, failure can legitimately occur. But the failed command still
schedules a cleanup, which will likely fail again.

Instead, only schedule deferred cleanup when the positive command succeeds.

This way of organizing the cleanup has the added benefit that now the
return code from these functions reflects whether the command passed.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/af10a5bb82ea11ead978cf903550089e006d7e70.1757004393.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Petr Machata 2025-09-04 19:07:26 +02:00 committed by Jakub Kicinski
parent ed07c8f2b8
commit fa57032941

View File

@ -547,8 +547,8 @@ ip_link_add()
{
local name=$1; shift
ip link add name "$name" "$@"
defer ip link del dev "$name"
ip link add name "$name" "$@" && \
defer ip link del dev "$name"
}
ip_link_set_master()
@ -556,8 +556,8 @@ ip_link_set_master()
local member=$1; shift
local master=$1; shift
ip link set dev "$member" master "$master"
defer ip link set dev "$member" nomaster
ip link set dev "$member" master "$master" && \
defer ip link set dev "$member" nomaster
}
ip_link_set_addr()
@ -566,8 +566,8 @@ ip_link_set_addr()
local addr=$1; shift
local old_addr=$(mac_get "$name")
ip link set dev "$name" address "$addr"
defer ip link set dev "$name" address "$old_addr"
ip link set dev "$name" address "$addr" && \
defer ip link set dev "$name" address "$old_addr"
}
ip_link_has_flag()
@ -590,8 +590,8 @@ ip_link_set_up()
local name=$1; shift
if ! ip_link_is_up "$name"; then
ip link set dev "$name" up
defer ip link set dev "$name" down
ip link set dev "$name" up && \
defer ip link set dev "$name" down
fi
}
@ -600,8 +600,8 @@ ip_link_set_down()
local name=$1; shift
if ip_link_is_up "$name"; then
ip link set dev "$name" down
defer ip link set dev "$name" up
ip link set dev "$name" down && \
defer ip link set dev "$name" up
fi
}
@ -609,20 +609,20 @@ ip_addr_add()
{
local name=$1; shift
ip addr add dev "$name" "$@"
defer ip addr del dev "$name" "$@"
ip addr add dev "$name" "$@" && \
defer ip addr del dev "$name" "$@"
}
ip_route_add()
{
ip route add "$@"
defer ip route del "$@"
ip route add "$@" && \
defer ip route del "$@"
}
bridge_vlan_add()
{
bridge vlan add "$@"
defer bridge vlan del "$@"
bridge vlan add "$@" && \
defer bridge vlan del "$@"
}
wait_local_port_listen()