mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
selftests: mptcp: join: properly kill background tasks
commit 852b644acbce1529307a4bb283752c4e77b5cda7 upstream.
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: 31ee4ad86afd ("selftests: mptcp: join: stop transfer when check is done (part 1)")
Cc: stable@vger.kernel.org
Fixes: 04b57c9e096a ("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>
[ Conflicts in mptcp_join.sh, because commit e3b47e460b4b ("selftests:
mptcp: userspace pm remove initial subflow") and commit b9fb176081fb
("selftests: mptcp: userspace pm send RM_ADDR for ID 0") are not in
this version. They introduced new subtests that got modified by this
patch. That's OK, no need to modify them if they are not there: the
conflicts can be dropped. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f12f4c6576
commit
b77075c08d
@@ -3679,7 +3679,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
|
||||
@@ -3707,7 +3707,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
|
||||
@@ -3728,7 +3728,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
|
||||
}
|
||||
|
||||
@@ -3758,7 +3758,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 &&
|
||||
@@ -3813,7 +3813,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
|
||||
@@ -3886,7 +3886,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
|
||||
@@ -3933,7 +3933,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
|
||||
|
||||
chk_join_nr 2 2 2
|
||||
chk_add_nr 2 2
|
||||
|
||||
@@ -242,6 +242,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