From nobody Mon Feb 9 16:52:57 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7402132D0F2; Fri, 31 Oct 2025 09:01:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761901318; cv=none; b=gTN/YAejVQkqSaiH7uEJkY343ReyvMqUoy8zBkPCpXM1lYq97b66oY8R/djTa/cqv589VtkN7yYFVWmN16iTHn0ozy9AOn8wnisK0ebruaTkkhRWk9a12IYHhMxd2dOUTixpbMx8qvVf1QEUolmnJNcn9JElzSe+I4qFbmBHovk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761901318; c=relaxed/simple; bh=mqvC6RlbP3oeEflL7AIfw7ofEo2NITuMjz5Yg98lAwA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hsCNxNwiJ2KjuZcuKeYepeGfUdbhn3Gm9nrpjMoumRIRXbQDNgJVf0KyBQ3pyN29WpymbH3AsMRfhk3HQM+aXtFQ12kczAhkBwu04BeaEEFmcd8KzoI38YVTT9dK7vWFtb3ZePq9GJtuyVA5ibxuFL895oqQWJ1hr7Nk+9bSzQk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=01K1rCA1; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="01K1rCA1" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id B2F7A1A17A8; Fri, 31 Oct 2025 09:01:54 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 8229260704; Fri, 31 Oct 2025 09:01:54 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id CCB3A1181083D; Fri, 31 Oct 2025 10:01:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1761901313; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=0dcDKq9UuBF20o0hyNzb1Nz3YZY3Z4xE5wso7h6K0Sc=; b=01K1rCA1W+aEl0wk61vycso2DndXwdNGIeDX8edqTDo0yicG1WoV+arUK21ttnUpUW13JZ CY5VaWWXoxoZP3+hclLqf3r6sF8bBRkXuLgun0QKW92EkwnZSHRCSAIfSPJ5C3WKo5eFh7 2uJvgesb1oaxuN08rqH3dhrhgc1HOalZjgrm+TO2dP7SQ7ayfoWqxgkbCBDhm6/5kXj7FM evRBCgofpMNmwW2MzAKQPm7zuR6WdHsAPpxZU4G2+dFamfWruI2RQI0wtqohxkzNGsIxRV SxlvHKOeXPx1SNwTCeWVWR8jl0oIXz9JEmntQtMAp6Jvm93x/76SVPCYHg0Vvw== From: =?utf-8?q?Alexis_Lothor=C3=A9_=28eBPF_Foundation=29?= Date: Fri, 31 Oct 2025 10:01:41 +0100 Subject: [PATCH bpf-next 1/3] selftests/bpf: skip tc_tunnel subtest if its setup fails 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: <20251031-tc_tunnel_improv-v1-1-0ffe44d27eda@bootlin.com> References: <20251031-tc_tunnel_improv-v1-0-0ffe44d27eda@bootlin.com> In-Reply-To: <20251031-tc_tunnel_improv-v1-0-0ffe44d27eda@bootlin.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: ebpf@linuxfoundation.org, Thomas Petazzoni , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Bastien Curutchet , =?utf-8?q?Alexis_Lothor=C3=A9_=28eBPF_Foundation=29?= X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 A subtest setup can fail in a wide variety of ways, so make sure not to run it if an issue occurs during its setup. The return value is already representing whether the setup succeeds or fails, it is just about wiring it. Signed-off-by: Alexis Lothor=C3=A9 (eBPF Foundation) --- tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c b/tool= s/testing/selftests/bpf/prog_tests/test_tc_tunnel.c index cf2e088bfe8e..1d8d38e67f8b 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c +++ b/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c @@ -666,8 +666,8 @@ void test_tc_tunnel(void) ret =3D build_subtest_name(cfg, cfg->name, TEST_NAME_MAX_LEN); if (ret < 0 || !test__start_subtest(cfg->name)) continue; - subtest_setup(skel, cfg); - run_test(cfg); + if (subtest_setup(skel, cfg) =3D=3D 0) + run_test(cfg); subtest_cleanup(cfg); } cleanup(); --=20 2.51.1.dirty From nobody Mon Feb 9 16:52:57 2026 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 201B232E68E; Fri, 31 Oct 2025 09:01:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.171.202.116 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761901320; cv=none; b=PaIm0ClRYLJ+8WBueg+M4kNLHCy9mQBvBcIw+SP2diZj1g2XW9SY2rr/6hbaUtEPWYw51A8B1z+KBEYbgNa+e71o1X1Ttp94uWb4VSwrxqTI5oh/CnzAIiZHo0Qt26BFNC+K5i94sszImenWIbk+wXbnDe39uSYkoFo5yxzEsOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761901320; c=relaxed/simple; bh=xqZ4ks0zodwVdhdoU6aLILyMcPX95g56qW1FHGqGTRY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jkRxCPGzVI8ZVL1X0HBvsR3pR/7bLK8NXL6cLR0/58eLpo7B6XIKaONlFhIYpIHU21nuyMvNTug34MZyDyGF5Z3lg02R1RYgdIzBgasBDA7uNH9V+NCSsbkK9vB8UCxCMGq6n1lZ5jI0wZjgbawOv9KDhrC/9+mliCk5AbuJ0wk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=vQSTRGHZ; arc=none smtp.client-ip=185.171.202.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="vQSTRGHZ" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id F20E6C0E94F; Fri, 31 Oct 2025 09:01:35 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 7949160704; Fri, 31 Oct 2025 09:01:56 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id B59E411810838; Fri, 31 Oct 2025 10:01:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1761901315; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=kef/BUw/7kskzjxgi11EVQHCfO8iul2HvO8swTDNzfU=; b=vQSTRGHZG/JHOsfT87atsoYUt+0Zdf0vxb5xD00YJoYSQ5OlznKJiLzo5FjfW2uGEMIsJT 3hJIQ0agBbQG5L9+6HqvbDt5hDvlk9NC9ZYVwgH8O8R2gk6LOyFe2m4m3wTMpWE9qYnE0W 5QwLh/QzomfBMtz1FRXycJhmAjJNyeG3b/zkUw43LTJr/kgX0zeEIRzNJQtISekfapwtpu BUd2EJedANGGSdrLJSL//5u3z24f4E3/M09q6BsunwyTd6jkAdSEg8cuQBpQ0xeeinD0p/ MhkImuqyE4qp9GFM+EQOV1Fmb5c2+CtZWetjqOyOyR3AEgb2sK/EmwPVz5uqnA== From: =?utf-8?q?Alexis_Lothor=C3=A9_=28eBPF_Foundation=29?= Date: Fri, 31 Oct 2025 10:01:42 +0100 Subject: [PATCH bpf-next 2/3] selftests/bpf: add checks in tc_tunnel when entering net 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: <20251031-tc_tunnel_improv-v1-2-0ffe44d27eda@bootlin.com> References: <20251031-tc_tunnel_improv-v1-0-0ffe44d27eda@bootlin.com> In-Reply-To: <20251031-tc_tunnel_improv-v1-0-0ffe44d27eda@bootlin.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: ebpf@linuxfoundation.org, Thomas Petazzoni , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Bastien Curutchet , =?utf-8?q?Alexis_Lothor=C3=A9_=28eBPF_Foundation=29?= X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 test_tc_tunnel is missing checks on any open_netns. Add those checks anytime we try to enter a net namespace, and skip the related operations if we fail. While at it, reduce the number of open_netns/close_netns for cases involving operations in two distinct namespaces: the test currently does the following: nstoken =3D open_netns("foo") do_operation(); close(nstoken); nstoken =3D open_netns("bar") do_another_operation(); close(nstoken); As already stated in reviews for the initial test, we don't need to go back to the root net namespace to enter a second namespace, so just do: ntoken_client =3D open_netns("foo") do_operation(); nstoken_server =3D open_netns("bar") do_another_operation(); close(nstoken_server); close(nstoken_client); Signed-off-by: Alexis Lothor=C3=A9 (eBPF Foundation) --- .../selftests/bpf/prog_tests/test_tc_tunnel.c | 134 ++++++++++++++---= ---- 1 file changed, 88 insertions(+), 46 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c b/tool= s/testing/selftests/bpf/prog_tests/test_tc_tunnel.c index 1d8d38e67f8b..deea90aaefad 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c +++ b/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c @@ -133,8 +133,12 @@ static void set_subtest_addresses(struct subtest_cfg *= cfg) =20 static int run_server(struct subtest_cfg *cfg) { - struct nstoken *nstoken =3D open_netns(SERVER_NS); int family =3D cfg->ipproto =3D=3D 6 ? AF_INET6 : AF_INET; + struct nstoken *nstoken; + + nstoken =3D open_netns(SERVER_NS); + if (!ASSERT_OK_PTR(nstoken, "open server ns")) + return -1; =20 cfg->server_fd =3D start_reuseport_server(family, SOCK_STREAM, cfg->server_addr, TEST_PORT, @@ -319,6 +323,10 @@ static int configure_encapsulation(struct subtest_cfg = *cfg) static int configure_kernel_decapsulation(struct subtest_cfg *cfg) { struct nstoken *nstoken =3D open_netns(SERVER_NS); + int ret =3D -1; + + if (!ASSERT_OK_PTR(nstoken, "open server ns")) + return ret; =20 if (cfg->configure_fou_rx_port && !ASSERT_OK(add_fou_rx_port(cfg), "configure FOU RX port")) @@ -337,11 +345,11 @@ static int configure_kernel_decapsulation(struct subt= est_cfg *cfg) SYS(fail, "sysctl -qw net.ipv4.conf.all.rp_filter=3D0"); SYS(fail, "sysctl -qw net.ipv4.conf.testtun0.rp_filter=3D0"); SYS(fail, "ip link set dev testtun0 up"); - close_netns(nstoken); - return 0; + + ret =3D 0; fail: close_netns(nstoken); - return -1; + return ret; } =20 static void remove_kernel_decapsulation(struct subtest_cfg *cfg) @@ -356,6 +364,10 @@ static void remove_kernel_decapsulation(struct subtest= _cfg *cfg) static int configure_ebpf_decapsulation(struct subtest_cfg *cfg) { struct nstoken *nstoken =3D open_netns(SERVER_NS); + int ret =3D -1; + + if (!ASSERT_OK_PTR(nstoken, "open server ns")) + return ret; =20 if (!cfg->expect_kern_decap_failure) SYS(fail, "ip link del testtun0"); @@ -363,17 +375,20 @@ static int configure_ebpf_decapsulation(struct subtes= t_cfg *cfg) if (!ASSERT_OK(tc_prog_attach("veth2", cfg->server_ingress_prog_fd, -1), "attach_program")) goto fail; - close_netns(nstoken); - return 0; + + ret =3D 0; fail: close_netns(nstoken); - return -1; + return ret; } =20 static void run_test(struct subtest_cfg *cfg) { struct nstoken *nstoken =3D open_netns(CLIENT_NS); =20 + if (!ASSERT_OK_PTR(nstoken, "open client ns")) + return; + if (!ASSERT_OK(run_server(cfg), "run server")) goto fail; =20 @@ -407,7 +422,7 @@ static void run_test(struct subtest_cfg *cfg) =20 static int setup(void) { - struct nstoken *nstoken =3D NULL; + struct nstoken *nstoken_client, *nstoken_server; int fd, err; =20 fd =3D open("/dev/urandom", O_RDONLY); @@ -424,52 +439,75 @@ static int setup(void) !ASSERT_OK(make_netns(SERVER_NS), "create server ns")) goto fail; =20 - nstoken =3D open_netns(CLIENT_NS); - SYS(fail, "ip link add %s type veth peer name %s", + nstoken_client =3D open_netns(CLIENT_NS); + if (!ASSERT_OK_PTR(nstoken_client, "open client ns")) + goto fail_delete_ns; + SYS(fail_close_ns_client, "ip link add %s type veth peer name %s", "veth1 mtu 1500 netns " CLIENT_NS " address " MAC_ADDR_VETH1, "veth2 mtu 1500 netns " SERVER_NS " address " MAC_ADDR_VETH2); - SYS(fail, "ethtool -K veth1 tso off"); - SYS(fail, "ip link set veth1 up"); - close_netns(nstoken); - nstoken =3D open_netns(SERVER_NS); - SYS(fail, "ip link set veth2 up"); - close_netns(nstoken); - + SYS(fail_close_ns_client, "ethtool -K veth1 tso off"); + SYS(fail_close_ns_client, "ip link set veth1 up"); + nstoken_server =3D open_netns(SERVER_NS); + if (!ASSERT_OK_PTR(nstoken_server, "open server ns")) + goto fail_close_ns_client; + SYS(fail_close_ns_server, "ip link set veth2 up"); + + close_netns(nstoken_server); + close_netns(nstoken_client); return 0; + +fail_close_ns_server: + close_netns(nstoken_server); +fail_close_ns_client: + close_netns(nstoken_client); +fail_delete_ns: + SYS_NOFAIL("ip netns del " CLIENT_NS); + SYS_NOFAIL("ip netns del " SERVER_NS); fail: - close_netns(nstoken); - return 1; + return -1; } =20 static int subtest_setup(struct test_tc_tunnel *skel, struct subtest_cfg *= cfg) { - struct nstoken *nstoken; + struct nstoken *nstoken_client, *nstoken_server; + int ret =3D -1; =20 set_subtest_addresses(cfg); if (!ASSERT_OK(set_subtest_progs(cfg, skel), "find subtest progs")) - return -1; + goto fail; if (cfg->extra_decap_mod_args_cb) cfg->extra_decap_mod_args_cb(cfg, cfg->extra_decap_mod_args); =20 - nstoken =3D open_netns(CLIENT_NS); - SYS(fail, "ip -4 addr add " IP4_ADDR_VETH1 "/24 dev veth1"); - SYS(fail, "ip -4 route flush table main"); - SYS(fail, "ip -4 route add " IP4_ADDR_VETH2 " mtu 1450 dev veth1"); - SYS(fail, "ip -6 addr add " IP6_ADDR_VETH1 "/64 dev veth1 nodad"); - SYS(fail, "ip -6 route flush table main"); - SYS(fail, "ip -6 route add " IP6_ADDR_VETH2 " mtu 1430 dev veth1"); - close_netns(nstoken); - - nstoken =3D open_netns(SERVER_NS); - SYS(fail, "ip -4 addr add " IP4_ADDR_VETH2 "/24 dev veth2"); - SYS(fail, "ip -6 addr add " IP6_ADDR_VETH2 "/64 dev veth2 nodad"); - close_netns(nstoken); - - return 0; + nstoken_client =3D open_netns(CLIENT_NS); + if (!ASSERT_OK_PTR(nstoken_client, "open client ns")) + goto fail; + SYS(fail_close_client_ns, + "ip -4 addr add " IP4_ADDR_VETH1 "/24 dev veth1"); + SYS(fail_close_client_ns, "ip -4 route flush table main"); + SYS(fail_close_client_ns, + "ip -4 route add " IP4_ADDR_VETH2 " mtu 1450 dev veth1"); + SYS(fail_close_client_ns, + "ip -6 addr add " IP6_ADDR_VETH1 "/64 dev veth1 nodad"); + SYS(fail_close_client_ns, "ip -6 route flush table main"); + SYS(fail_close_client_ns, + "ip -6 route add " IP6_ADDR_VETH2 " mtu 1430 dev veth1"); + nstoken_server =3D open_netns(SERVER_NS); + if (!ASSERT_OK_PTR(nstoken_server, "open server ns")) + goto fail_close_client_ns; + SYS(fail_close_server_ns, + "ip -4 addr add " IP4_ADDR_VETH2 "/24 dev veth2"); + SYS(fail_close_server_ns, + "ip -6 addr add " IP6_ADDR_VETH2 "/64 dev veth2 nodad"); + + ret =3D 0; + +fail_close_server_ns: + close_netns(nstoken_server); +fail_close_client_ns: + close_netns(nstoken_client); fail: - close_netns(nstoken); - return -1; + return ret; } =20 =20 @@ -478,15 +516,19 @@ static void subtest_cleanup(struct subtest_cfg *cfg) struct nstoken *nstoken; =20 nstoken =3D open_netns(CLIENT_NS); - SYS_NOFAIL("tc qdisc delete dev veth1 parent ffff:fff1"); - SYS_NOFAIL("ip a flush veth1"); - close_netns(nstoken); + if (ASSERT_OK_PTR(nstoken, "open clien ns")) { + SYS_NOFAIL("tc qdisc delete dev veth1 parent ffff:fff1"); + SYS_NOFAIL("ip a flush veth1"); + close_netns(nstoken); + } nstoken =3D open_netns(SERVER_NS); - SYS_NOFAIL("tc qdisc delete dev veth2 parent ffff:fff1"); - SYS_NOFAIL("ip a flush veth2"); - if (!cfg->expect_kern_decap_failure) - remove_kernel_decapsulation(cfg); - close_netns(nstoken); + if (ASSERT_OK_PTR(nstoken, "open clien ns")) { + SYS_NOFAIL("tc qdisc delete dev veth2 parent ffff:fff1"); + SYS_NOFAIL("ip a flush veth2"); + if (!cfg->expect_kern_decap_failure) + remove_kernel_decapsulation(cfg); + close_netns(nstoken); + } } =20 static void cleanup(void) --=20 2.51.1.dirty From nobody Mon Feb 9 16:52:57 2026 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDD0E32ED44 for ; Fri, 31 Oct 2025 09:01:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.171.202.116 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761901322; cv=none; b=ukLSf3Fad48FlyroMlvpkgLXjI4iNAxc+6nVmp1R+v8NeGGWjQkeMR/yBgnxHgazAEye0/BQwj80TQI6qFxOLIlMCl80YDewna5Bc+wjSytdyrWPiNSkOBptR/1xaHM3v7ancNB9NLVY9MboGwPFjhz6p1cQkZ2zRf0tSC4EeEU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761901322; c=relaxed/simple; bh=pMUGzYjbOegFHkT1FuYNVbyBzYCy/Ejns06DI02dhcI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qrlC+xTDj4/Y2zlYrmB7c8ZxPhd62Rf190RC/w44X/sbKF53X9hzGcHIWs/WpVzjiCKiqpC55enUTaVaKtasuU6YolgJ8ErxIys9Q4u872DH27vwuk+soIlHbUIOA7pA1OqvTo6a1bHxao20gCZahgzg6XqVu9GhWbgXK2Ud1hI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=k3w+Tc2/; arc=none smtp.client-ip=185.171.202.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="k3w+Tc2/" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id 168C7C0E94E; Fri, 31 Oct 2025 09:01:38 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 92B7160704; Fri, 31 Oct 2025 09:01:58 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id B7BEE11810848; Fri, 31 Oct 2025 10:01:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1761901317; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=OV3wcdNzU1YfXWJ7DsorNSNJWoONphM2tAJI5bX7CJo=; b=k3w+Tc2/LyqKRzh1F8MYwVSx5Bxpx9fY2jfwXYZsifPPCvZ1EPX48l88hxNgeQDiJ8I57J Rycs1WbQDn97olU+mvf5877HinAi/sAGpgFU1vyhNR5t1dpsvW+0gme1Qb6ZaQxnNlp7RP Bf+PX6Q8sowyJ7TLXZvraxD5oNlkWyLZ/EOGwMnDzIb0abGstJMc7RPxJrGaxtLbck+qxz RNa5En15rOzkAgQuzibPgvQkRUT6dbRrH9AMudxxUUS5Tiae9lJWIasRFplRPDgN/edpOA ljzOqea+BcIrCped1Tzw+C1q9ZUvFVPnA66J41U66Mktbaock+Tw+rnjdJe9ig== From: =?utf-8?q?Alexis_Lothor=C3=A9_=28eBPF_Foundation=29?= Date: Fri, 31 Oct 2025 10:01:43 +0100 Subject: [PATCH bpf-next 3/3] selftests/bpf: use start_server_str rather than start_reuseport_server in tc_tunnel 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: <20251031-tc_tunnel_improv-v1-3-0ffe44d27eda@bootlin.com> References: <20251031-tc_tunnel_improv-v1-0-0ffe44d27eda@bootlin.com> In-Reply-To: <20251031-tc_tunnel_improv-v1-0-0ffe44d27eda@bootlin.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: ebpf@linuxfoundation.org, Thomas Petazzoni , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Bastien Curutchet , =?utf-8?q?Alexis_Lothor=C3=A9_=28eBPF_Foundation=29?= X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 test_tc_tunnel currently uses start_reuseport_server because it needs to frequently start and stop the server, so we need SO_REUSEPORT to avoid getting errors on server restart due to the socket being in TIME_WAIT state. But the test is only using one server at a time, so it is a bit confusing to use this API. Replace start_reuseport with start_sever_str, and provided the relevant callback to set SO_REUSEPORT. Signed-off-by: Alexis Lothor=C3=A9 (eBPF Foundation) --- .../selftests/bpf/prog_tests/test_tc_tunnel.c | 24 +++++++++++++++---= ---- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c b/tool= s/testing/selftests/bpf/prog_tests/test_tc_tunnel.c index deea90aaefad..8e3fe6dc6221 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c +++ b/tools/testing/selftests/bpf/prog_tests/test_tc_tunnel.c @@ -69,7 +69,7 @@ struct subtest_cfg { int client_egress_prog_fd; int server_ingress_prog_fd; char extra_decap_mod_args[TUNNEL_ARGS_MAX_LEN]; - int *server_fd; + int server_fd; }; =20 struct connection { @@ -131,20 +131,30 @@ static void set_subtest_addresses(struct subtest_cfg = *cfg) } } =20 +static int reuseport_cb(int fd, void *opts) +{ + int one =3D 1; + + return setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &one, sizeof(one)); +} + static int run_server(struct subtest_cfg *cfg) { int family =3D cfg->ipproto =3D=3D 6 ? AF_INET6 : AF_INET; + struct network_helper_opts opts =3D { + .timeout_ms =3D TIMEOUT_MS, + .post_socket_cb =3D reuseport_cb, + }; struct nstoken *nstoken; =20 nstoken =3D open_netns(SERVER_NS); if (!ASSERT_OK_PTR(nstoken, "open server ns")) return -1; =20 - cfg->server_fd =3D start_reuseport_server(family, SOCK_STREAM, - cfg->server_addr, TEST_PORT, - TIMEOUT_MS, 1); + cfg->server_fd =3D start_server_str(family, SOCK_STREAM, cfg->server_addr, + TEST_PORT, &opts); close_netns(nstoken); - if (!ASSERT_OK_PTR(cfg->server_fd, "start server")) + if (!ASSERT_OK_FD(cfg->server_fd, "start server")) return -1; =20 return 0; @@ -152,7 +162,7 @@ static int run_server(struct subtest_cfg *cfg) =20 static void stop_server(struct subtest_cfg *cfg) { - free_fds(cfg->server_fd, 1); + close(cfg->server_fd); } =20 static int check_server_rx_data(struct subtest_cfg *cfg, @@ -188,7 +198,7 @@ static struct connection *connect_client_to_server(stru= ct subtest_cfg *cfg) return NULL; } =20 - server_fd =3D accept(*cfg->server_fd, NULL, NULL); + server_fd =3D accept(cfg->server_fd, NULL, NULL); if (server_fd < 0) { close(client_fd); free(conn); --=20 2.51.1.dirty