]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
selftests: net: lib: remove ns from list after clean-up
authorMatthieu Baerts (NGI0) <matttbe@kernel.org>
Fri, 7 Jun 2024 16:31:03 +0000 (18:31 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 12 Jun 2024 02:30:25 +0000 (19:30 -0700)
Instead of only appending items to the list, removing them when the
netns has been deleted.

By doing that, we can make sure 'cleanup_all_ns()' is not trying to
remove already deleted netns.

Reviewed-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://lore.kernel.org/r/20240607-upstream-net-next-20240607-selftests-mptcp-net-lib-v1-2-e36986faac94@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/lib.sh

index b2572aff6286f1dbf83640d3ed3ded3a9b734b8f..c7a8cfb477ccacdec5d62719454fa3fc3bfe0c6e 100644 (file)
@@ -125,6 +125,20 @@ slowwait_for_counter()
        slowwait "$timeout" until_counter_is ">= $((base + delta))" "$@"
 }
 
+remove_ns_list()
+{
+       local item=$1
+       local ns
+       local ns_list=("${NS_LIST[@]}")
+       NS_LIST=()
+
+       for ns in "${ns_list[@]}"; do
+               if [ "${ns}" != "${item}" ]; then
+                       NS_LIST+=("${ns}")
+               fi
+       done
+}
+
 cleanup_ns()
 {
        local ns=""
@@ -136,6 +150,8 @@ cleanup_ns()
                if ! busywait $BUSYWAIT_TIMEOUT ip netns list \| grep -vq "^$ns$" &> /dev/null; then
                        echo "Warn: Failed to remove namespace $ns"
                        ret=1
+               else
+                       remove_ns_list "${ns}"
                fi
        done
 
@@ -154,17 +170,14 @@ setup_ns()
        local ns=""
        local ns_name=""
        local ns_list=()
-       local ns_exist=
        for ns_name in "$@"; do
                # Some test may setup/remove same netns multi times
                if unset ${ns_name} 2> /dev/null; then
                        ns="${ns_name,,}-$(mktemp -u XXXXXX)"
                        eval readonly ${ns_name}="$ns"
-                       ns_exist=false
                else
                        eval ns='$'${ns_name}
                        cleanup_ns "$ns"
-                       ns_exist=true
                fi
 
                if ! ip netns add "$ns"; then
@@ -173,7 +186,7 @@ setup_ns()
                        return $ksft_skip
                fi
                ip -n "$ns" link set lo up
-               ! $ns_exist && ns_list+=("$ns")
+               ns_list+=("$ns")
        done
        NS_LIST+=("${ns_list[@]}")
 }