Skip to content

Commit

Permalink
selftests: net: lib: avoid error removing empty netns name
Browse files Browse the repository at this point in the history
If there is an error to create the first netns with 'setup_ns()',
'cleanup_ns()' will be called with an empty string as first parameter.

The consequences is that 'cleanup_ns()' will try to delete an invalid
netns, and wait 20 seconds if the netns list is empty.

Instead of just checking if the name is not empty, convert the string
separated by spaces to an array. Manipulating the array is cleaner, and
calling 'cleanup_ns()' with an empty array will be a no-op.

Fixes: 25ae948 ("selftests/net: add lib.sh")
Cc: stable@vger.kernel.org
Acked-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
Link: https://lore.kernel.org/r/20240605-upstream-net-20240605-selftests-net-lib-fixes-v1-2-b3afadd368c9@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Matthieu Baerts (NGI0) authored and Jakub Kicinski committed Jun 6, 2024
1 parent 41b02ea commit 7932217
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions tools/testing/selftests/net/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ ksft_xfail=2
ksft_skip=4

# namespace list created by setup_ns
NS_LIST=""
NS_LIST=()

##############################################################################
# Helpers
Expand Down Expand Up @@ -137,6 +137,7 @@ cleanup_ns()
fi

for ns in "$@"; do
[ -z "${ns}" ] && continue
ip netns delete "${ns}" &> /dev/null
if ! busywait $BUSYWAIT_TIMEOUT ip netns list \| grep -vq "^$ns$" &> /dev/null; then
echo "Warn: Failed to remove namespace $ns"
Expand All @@ -150,7 +151,7 @@ cleanup_ns()

cleanup_all_ns()
{
cleanup_ns $NS_LIST
cleanup_ns "${NS_LIST[@]}"
}

# setup netns with given names as prefix. e.g
Expand All @@ -159,7 +160,7 @@ setup_ns()
{
local ns=""
local ns_name=""
local ns_list=""
local ns_list=()
local ns_exist=
for ns_name in "$@"; do
# Some test may setup/remove same netns multi times
Expand All @@ -175,13 +176,13 @@ setup_ns()

if ! ip netns add "$ns"; then
echo "Failed to create namespace $ns_name"
cleanup_ns "$ns_list"
cleanup_ns "${ns_list[@]}"
return $ksft_skip
fi
ip -n "$ns" link set lo up
! $ns_exist && ns_list="$ns_list $ns"
! $ns_exist && ns_list+=("$ns")
done
NS_LIST="$NS_LIST $ns_list"
NS_LIST+=("${ns_list[@]}")
}

tc_rule_stats_get()
Expand Down

0 comments on commit 7932217

Please sign in to comment.