From nobody Mon Feb 9 01:21:04 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D2F4220F29 for ; Wed, 24 Dec 2025 00:29:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766536147; cv=none; b=d8cAy6gyc2q1QBzejDO0zYizCIvYhvnvK4nbOQ35ODbrj8w17LE3PAaM7MC99jtoEgXGDxXCPK/Fp7mOF+MLoHPD9KJfWARhrI2UsvF1IuyyICUDAT0CnLtpCdrQIeDTeWZBdDprQf/F/cmSWK5ryxUrxHAtx0QNqubmZxlFz+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766536147; c=relaxed/simple; bh=1Q26HXpW7TYNGutKg90p+BWQKQP/kUEHf57kmmFmrxY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U7BuH5dnCr66zpNGPfjP1+O4btTJs/NIQfzXierIicGJewi0BPmuZGMNJMC+sSXOGEBRIfvtUSip2/FiwKFNOqi8R850PiOH8kMfBnF4A9Y37dX2we757apYnpEcLT5ShQC+AZUAsYIV3qXz+ff7dpS9cPLQRcJasHA68G8ioyQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K0uI0Jvc; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K0uI0Jvc" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-34e90f7b49cso4077664a91.3 for ; Tue, 23 Dec 2025 16:29:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766536143; x=1767140943; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lG0BScxKvY/q9QPoykPF18FCgS+okYK88nxhg8/Kgqs=; b=K0uI0JvcOPidjwZ/GLk1696AdoTs5bkFaGqv2JXv02SJ5IdWF2/Q2szP0Ll+Mtj8HR U3uKogS2sxa+5IA0yoCf/08fEOubXX2/+BOYoRcjNVZ18Noz32eAXqT2vva4ythtXew9 pTMvPTU3Q7nlkw1vluSF+ZMO5RhQbYoWN/r3H5eEOGl2eocmBvTSUFCr/FLlnpqyeNRp ClTRwijoTa5Ezhn0omW6qyx3l9rRmvuy7tLLJTV/o9HQgcHbZ6dV+l2o4YfIs1FcQESa hKTvd9fn12PQpywuKKTURVhApJ+uq+JMfsfwGGPI4/otxMzcPpMSICsk1qt7eeWGML7R CL9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766536143; x=1767140943; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lG0BScxKvY/q9QPoykPF18FCgS+okYK88nxhg8/Kgqs=; b=dBCIfxDYe4S7yh/h2NX31zu7qfhhc8JdvFe5b3ZDVbmbW6iEohJMhYFDiCJJ10XjGO EyCMEXnULY1OJfcsZ7lvvZNhzesGUH5VX6YEOXpIMvr6Aj1wj6x6PxJFEUFvxTjzxoMm a9PUzuJNBTcNKM5gVNyPxAxktBoJ2zA74VzUdMxyzSxxkWCsMTuEBk8ZWdDsQuLU1lYP o2GGa3/j6Xp39QgB2snTX6pDBF2YmzZ0YVzJ3r3503U9WjY2CLMuL/kJtnE3D2OKtp1e 74JMErIHx370Ae8VfbUALvTvyGKc5JpruVP9HkCRG2XVmFLZ0eq8CtOzLolTRAOVghcV lhMw== X-Gm-Message-State: AOJu0YyksPYlM7+a8Oo7WcoEPP4tkepHkvQiAJMBkeaxwZi/+wyE96Qj j+1ERL2QUWjxTgnEn6texAAYLoN+JSLnSLWyMWWncTW9AsjKMpRa+hqm X-Gm-Gg: AY/fxX5SVBTVUaPUtMUrHapeFQCd8kD/tmLyZYnrIl+YnmsoPqD9b2fl+I8U7zE1MuH bUkXY9gCTfxKi/o8KMCFHOPLyzpnPlYSAQn2ZiSTMGpfTUoYFX6aDazxSwbL9zJWAQL+G5KczHL VwdxzOR6R9DGsJL8fFMLGTUIg4PIuq7o0zAfDHkFR5gHR+WH10KFhbw4D8OajEhPhS1guFK1uVc nHFSbo50lM+xPZhOCJPiOLjsEqcxmosFGE5IEa35zCHEY25yOJMbq264tZryo5ghO/LokrYdFSI gl2vNbX+LnjKmYgGk4CT3YU42hePC14Sy/k8wF9kmqdlbPmZwdUCudhJWtiyQYj45Gcbd3nhu/X hjdIrETJOt6WOwBwxa+jd/8kTACZ8TovEDCPArs+T6plx7iMdxATImSG5lVOP2zmsvIwSOTwwxk zmZesNotSFsB+3i3rweuA= X-Google-Smtp-Source: AGHT+IGZf6TT1tJ9mgC9qURqLNgIYj5Me44ihebDLG/vQVGrabGjP55Ue0cesraskTAuO8K4lZL9tw== X-Received: by 2002:a17:90b:1dc6:b0:33b:b020:5968 with SMTP id 98e67ed59e1d1-34e921be2a1mr13235818a91.21.1766536143150; Tue, 23 Dec 2025 16:29:03 -0800 (PST) Received: from localhost ([2a03:2880:2ff:4::]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34e76ce0b4csm6505392a91.1.2025.12.23.16.29.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Dec 2025 16:29:02 -0800 (PST) From: Bobby Eshleman Date: Tue, 23 Dec 2025 16:28:41 -0800 Subject: [PATCH RFC net-next v13 07/13] selftests/vsock: prepare vm management helpers for namespaces Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251223-vsock-vmtest-v13-7-9d6db8e7c80b@meta.com> References: <20251223-vsock-vmtest-v13-0-9d6db8e7c80b@meta.com> In-Reply-To: <20251223-vsock-vmtest-v13-0-9d6db8e7c80b@meta.com> To: Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Stefan Hajnoczi , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , Xuan Zhuo , "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Bryan Tan , Vishnu Dasa , Broadcom internal kernel review list , Shuah Khan , Long Li Cc: linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-kselftest@vger.kernel.org, berrange@redhat.com, Sargun Dhillon , Bobby Eshleman , Bobby Eshleman X-Mailer: b4 0.14.3 From: Bobby Eshleman Add namespace support to vm management, ssh helpers, and vsock_test wrapper functions. This enables running VMs and test helpers in specific namespaces, which is required for upcoming namespace isolation tests. The functions still work correctly within the init ns, though the caller must now pass "init_ns" explicitly. No functional changes for existing tests. All have been updated to pass "init_ns" explicitly. Affected functions (such as vm_start() and vm_ssh()) now wrap their commands with 'ip netns exec' when executing commands in non-init namespaces. Reviewed-by: Stefano Garzarella Signed-off-by: Bobby Eshleman --- tools/testing/selftests/vsock/vmtest.sh | 93 +++++++++++++++++++++++------= ---- 1 file changed, 65 insertions(+), 28 deletions(-) diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selfte= sts/vsock/vmtest.sh index c2bdc293b94c..1d03acb62347 100755 --- a/tools/testing/selftests/vsock/vmtest.sh +++ b/tools/testing/selftests/vsock/vmtest.sh @@ -135,7 +135,18 @@ del_namespaces() { } =20 vm_ssh() { - ssh -q -o UserKnownHostsFile=3D/dev/null -p ${SSH_HOST_PORT} localhost "$= @" + local ns_exec + + if [[ "${1}" =3D=3D init_ns ]]; then + ns_exec=3D"" + else + ns_exec=3D"ip netns exec ${1}" + fi + + shift + + ${ns_exec} ssh -q -o UserKnownHostsFile=3D/dev/null -p "${SSH_HOST_PORT}"= localhost "$@" + return $? } =20 @@ -258,10 +269,12 @@ terminate_pidfiles() { =20 vm_start() { local pidfile=3D$1 + local ns=3D$2 local logfile=3D/dev/null local verbose_opt=3D"" local kernel_opt=3D"" local qemu_opts=3D"" + local ns_exec=3D"" local qemu =20 qemu=3D$(command -v "${QEMU}") @@ -282,7 +295,11 @@ vm_start() { kernel_opt=3D"${KERNEL_CHECKOUT}" fi =20 - vng \ + if [[ "${ns}" !=3D "init_ns" ]]; then + ns_exec=3D"ip netns exec ${ns}" + fi + + ${ns_exec} vng \ --run \ ${kernel_opt} \ ${verbose_opt} \ @@ -297,6 +314,7 @@ vm_start() { } =20 vm_wait_for_ssh() { + local ns=3D$1 local i =20 i=3D0 @@ -304,7 +322,8 @@ vm_wait_for_ssh() { if [[ ${i} -gt ${WAIT_PERIOD_MAX} ]]; then die "Timed out waiting for guest ssh" fi - if vm_ssh -- true; then + + if vm_ssh "${ns}" -- true; then break fi i=3D$(( i + 1 )) @@ -338,30 +357,41 @@ wait_for_listener() } =20 vm_wait_for_listener() { - local port=3D$1 + local ns=3D$1 + local port=3D$2 =20 - vm_ssh <&1 | log_guest rc=3D$? else - vm_ssh -- "${VSOCK_TEST}" \ + vm_ssh "${ns}" -- "${VSOCK_TEST}" \ --mode=3Dserver \ --peer-cid=3D"${cid}" \ --control-port=3D"${port}" \ @@ -381,7 +411,7 @@ vm_vsock_test() { return $rc fi =20 - vm_wait_for_listener "${port}" + vm_wait_for_listener "${ns}" "${port}" rc=3D$? fi set +o pipefail @@ -390,22 +420,28 @@ vm_vsock_test() { } =20 host_vsock_test() { - local host=3D$1 - local cid=3D$2 - local port=3D$3 + local ns=3D$1 + local host=3D$2 + local cid=3D$3 + local port=3D$4 local rc =20 + local cmd=3D"${VSOCK_TEST}" + if [[ "${ns}" !=3D "init_ns" ]]; then + cmd=3D"ip netns exec ${ns} ${cmd}" + fi + # log output and use pipefail to respect vsock_test errors set -o pipefail if [[ "${host}" !=3D server ]]; then - ${VSOCK_TEST} \ + ${cmd} \ --mode=3Dclient \ --peer-cid=3D"${cid}" \ --control-host=3D"${host}" \ --control-port=3D"${port}" 2>&1 | log_host rc=3D$? else - ${VSOCK_TEST} \ + ${cmd} \ --mode=3Dserver \ --peer-cid=3D"${cid}" \ --control-port=3D"${port}" 2>&1 | log_host & @@ -416,7 +452,7 @@ host_vsock_test() { return $rc fi =20 - host_wait_for_listener "${port}" + host_wait_for_listener "${ns}" "${port}" rc=3D$? fi set +o pipefail @@ -460,11 +496,11 @@ log_guest() { } =20 test_vm_server_host_client() { - if ! vm_vsock_test "server" 2 "${TEST_GUEST_PORT}"; then + if ! vm_vsock_test "init_ns" "server" 2 "${TEST_GUEST_PORT}"; then return "${KSFT_FAIL}" fi =20 - if ! host_vsock_test "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PORT}"; then + if ! host_vsock_test "init_ns" "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PO= RT}"; then return "${KSFT_FAIL}" fi =20 @@ -472,11 +508,11 @@ test_vm_server_host_client() { } =20 test_vm_client_host_server() { - if ! host_vsock_test "server" "${VSOCK_CID}" "${TEST_HOST_PORT_LISTENER}"= ; then + if ! host_vsock_test "init_ns" "server" "${VSOCK_CID}" "${TEST_HOST_PORT_= LISTENER}"; then return "${KSFT_FAIL}" fi =20 - if ! vm_vsock_test "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; then + if ! vm_vsock_test "init_ns" "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; t= hen return "${KSFT_FAIL}" fi =20 @@ -486,13 +522,14 @@ test_vm_client_host_server() { test_vm_loopback() { local port=3D60000 # non-forwarded local port =20 - vm_ssh -- modprobe vsock_loopback &> /dev/null || : + vm_ssh "init_ns" -- modprobe vsock_loopback &> /dev/null || : =20 - if ! vm_vsock_test "server" 1 "${port}"; then + if ! vm_vsock_test "init_ns" "server" 1 "${port}"; then return "${KSFT_FAIL}" fi =20 - if ! vm_vsock_test "127.0.0.1" 1 "${port}"; then + + if ! vm_vsock_test "init_ns" "127.0.0.1" 1 "${port}"; then return "${KSFT_FAIL}" fi =20 @@ -621,8 +658,8 @@ cnt_total=3D0 if shared_vm_tests_requested "${ARGS[@]}"; then log_host "Booting up VM" pidfile=3D"$(create_pidfile)" - vm_start "${pidfile}" - vm_wait_for_ssh + vm_start "${pidfile}" "init_ns" + vm_wait_for_ssh "init_ns" log_host "VM booted up" =20 run_shared_vm_tests "${ARGS[@]}" --=20 2.47.3