mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
selftests: mptcp: join: properly kill background tasks
commit852b644acbupstream. The 'run_tests' function is executed in the background, but killing its associated PID would not kill the children tasks running in the background. To properly kill all background tasks, 'kill -- -PID' could be used, but this requires kill from procps-ng. Instead, all children tasks are listed using 'ps', and 'kill' is called with all PIDs of this group. Fixes:31ee4ad86a("selftests: mptcp: join: stop transfer when check is done (part 1)") Cc: stable@vger.kernel.org Fixes:04b57c9e09("selftests: mptcp: join: stop transfer when check is done (part 2)") Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20251110-net-mptcp-sft-join-unstable-v1-6-a4332c714e10@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
acc03eb7e8
commit
f4ff166d75
@@ -3645,7 +3645,7 @@ userspace_tests()
|
||||
chk_mptcp_info subflows 0 subflows 0
|
||||
chk_subflows_total 1 1
|
||||
kill_events_pids
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
fi
|
||||
|
||||
# userspace pm create destroy subflow
|
||||
@@ -3673,7 +3673,7 @@ userspace_tests()
|
||||
chk_mptcp_info subflows 0 subflows 0
|
||||
chk_subflows_total 1 1
|
||||
kill_events_pids
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
fi
|
||||
|
||||
# userspace pm create id 0 subflow
|
||||
@@ -3694,7 +3694,7 @@ userspace_tests()
|
||||
chk_mptcp_info subflows 1 subflows 1
|
||||
chk_subflows_total 2 2
|
||||
kill_events_pids
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
fi
|
||||
|
||||
# userspace pm remove initial subflow
|
||||
@@ -3718,7 +3718,7 @@ userspace_tests()
|
||||
chk_mptcp_info subflows 1 subflows 1
|
||||
chk_subflows_total 1 1
|
||||
kill_events_pids
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
fi
|
||||
|
||||
# userspace pm send RM_ADDR for ID 0
|
||||
@@ -3744,7 +3744,7 @@ userspace_tests()
|
||||
chk_mptcp_info subflows 1 subflows 1
|
||||
chk_subflows_total 1 1
|
||||
kill_events_pids
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -3774,7 +3774,7 @@ endpoint_tests()
|
||||
pm_nl_add_endpoint $ns2 10.0.2.2 flags signal
|
||||
pm_nl_check_endpoint "modif is allowed" \
|
||||
$ns2 10.0.2.2 id 1 flags signal
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
fi
|
||||
|
||||
if reset_with_tcp_filter "delete and re-add" ns2 10.0.3.2 REJECT OUTPUT &&
|
||||
@@ -3829,7 +3829,7 @@ endpoint_tests()
|
||||
chk_mptcp_info subflows 3 subflows 3
|
||||
done
|
||||
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
|
||||
kill_events_pids
|
||||
chk_evt_nr ns1 MPTCP_LIB_EVENT_LISTENER_CREATED 1
|
||||
@@ -3903,7 +3903,7 @@ endpoint_tests()
|
||||
wait_mpj $ns2
|
||||
chk_subflow_nr "after re-re-add ID 0" 3
|
||||
chk_mptcp_info subflows 3 subflows 3
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
|
||||
kill_events_pids
|
||||
chk_evt_nr ns1 MPTCP_LIB_EVENT_LISTENER_CREATED 1
|
||||
@@ -3951,7 +3951,7 @@ endpoint_tests()
|
||||
wait_mpj $ns2
|
||||
pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal
|
||||
wait_mpj $ns2
|
||||
mptcp_lib_kill_wait $tests_pid
|
||||
mptcp_lib_kill_group_wait $tests_pid
|
||||
|
||||
join_syn_tx=3 join_connect_err=1 \
|
||||
chk_join_nr 2 2 2
|
||||
|
||||
@@ -350,6 +350,27 @@ mptcp_lib_kill_wait() {
|
||||
wait "${1}" 2>/dev/null
|
||||
}
|
||||
|
||||
# $1: PID
|
||||
mptcp_lib_pid_list_children() {
|
||||
local curr="${1}"
|
||||
# evoke 'ps' only once
|
||||
local pids="${2:-"$(ps o pid,ppid)"}"
|
||||
|
||||
echo "${curr}"
|
||||
|
||||
local pid
|
||||
for pid in $(echo "${pids}" | awk "\$2 == ${curr} { print \$1 }"); do
|
||||
mptcp_lib_pid_list_children "${pid}" "${pids}"
|
||||
done
|
||||
}
|
||||
|
||||
# $1: PID
|
||||
mptcp_lib_kill_group_wait() {
|
||||
# Some users might not have procps-ng: cannot use "kill -- -PID"
|
||||
mptcp_lib_pid_list_children "${1}" | xargs -r kill &>/dev/null
|
||||
wait "${1}" 2>/dev/null
|
||||
}
|
||||
|
||||
# $1: IP address
|
||||
mptcp_lib_is_v6() {
|
||||
[ -z "${1##*:*}" ]
|
||||
|
||||
Reference in New Issue
Block a user