From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 271DB1A9F97 for ; Sat, 20 Jun 2026 02:44:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781923497; cv=none; b=VTz+a4v6A7cFunQhxzrAueVGR8EuicTG0hoG96VEeYc9uhzBZ+Tg+dLZbYDtqgRhucN2RzJioQx40jno/YZe6c0vkbYDIvgUNdLygqF/RL6dGZKLpPRTmPs3vnmSBVCoLmJ/Mk/vwboaQlNBmY0dFI1XMsprj8IqhWjejge2REQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781923497; c=relaxed/simple; bh=YXXYvTua7xSnHRRQX7UMZYFBwjxqSm8D+R0Oz3PNVes=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ClnmQzwg67yj/LU2QkgxMqQIAo2qemycDIrMsD8YqYEKe+oSvW9Lh5sOJgBY3TIUskpsFDL4AZIA+x2nEmnsHf2OiiRQhwyyob0Y4loPoON+2jaI/n4nksneKu98igABevpn/IMGQfiGHdnLSdhJK97tGE0JQnkQObngRmrrFNk= 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=X7kWZhmU; arc=none smtp.client-ip=209.85.216.43 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="X7kWZhmU" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-37c8e7c8137so1365918a91.1 for ; Fri, 19 Jun 2026 19:44:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781923495; x=1782528295; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CoheuMpaBBYEB0ARICeSI4vr55A0uKbRHvd5QkzvWCs=; b=X7kWZhmUZrK3J7H/3V5xmtseDKk5KU1sA4ueKvNdkrDLh0XT9ziaCP6RpzQgdI1eR3 8F4NdXcrVkGaypjvUKNMpoBJIJ90iDQRSuk7I5itD5E1rUsEr1Ed15/cN0+4N0MMefku JSjZ2KAm6TMShnentWZJX1WBAyTvHgGz19baF+hoUtxpOgfX+x3KuL/ufZL1rO1mZCsv FRND7ecxlhc0dpVOpYqtO5geqfCK6e84JD5QHgf53VBWDi4TwJjkvwjvddnoLOp2PtiQ T/Jp4hVraSQD7bkuD675nOx0DVPosEvrNcLIpM/z1phLj0DndLtHogZ2xap7od4+9Dpd wnXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781923495; x=1782528295; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CoheuMpaBBYEB0ARICeSI4vr55A0uKbRHvd5QkzvWCs=; b=IImVQC7+S+kOtZAvoa3NeAo6Enpur9DWxPpUWVGxbpohU8G30scxahqgVxEp5XI5DD kWGyq8LrLsxp5KHEpSypv9hPj26GbGXpYCU6awEfsaNCtwf7BY0TJEqnvsMSsV8fyjT2 oJ40SMMg9J9TfR/IhdI7YlF/VZZ2GPA2VMc6oOW1gs30RJ3bIWrr7Q9gZIpb3sIYWs1V HhkB9eTeMQf6s6dbiNF1WuoOi1r0oNd675RLbLTcvRHOqRaVP3/JiuHxpkEfVivpsrAv /SBzBo74yyXqcaYp20cukubJEln+nMpj4D/XZ5ol1rULE6L51NbyXz8y8jQ2U6SAFmUZ 9WAQ== X-Forwarded-Encrypted: i=1; AFNElJ+14E6/1JlRtAc/G6MBw8u5YZG7hzjL8HMAQo80Nv8RTh5a0uAdMa9rTNl6+6Mg3rl9YsXS52E=@vger.kernel.org X-Gm-Message-State: AOJu0YzULyCfDMnxLsS73KbZUW7mhqhhOhleNFj6HyRMxthxozta24wN P0edwjkJU2Lpda+JDsQSiyDhxXVduHC0eh4IrL/+Ff6mhXp48zO6L6/ybbwnl0kW X-Gm-Gg: AfdE7cmUQrt29rFoiuAa9uYuKC5gA7RAFoIBUrnDwNfn8xPRPU+g+a1WbR+L08nmIX+ dr7yQ4lG7cA6Aa8Xl5MmkTXd3eBR+xMA3TNEvDaOE0ueu/Hv42kuYnTjdUCgx24lu5IwoEYzKHZ lCKOlQ+UmDc4uTAVZs62KrKrm2odX7gZVPWeGI2AJ07W9Tw/iu7HowI5azeMi9WvQtQlsIHheeR TjjRU03mWEaBGhg+9jehTP49UAfc0IAJwWSI/f9Zl5D8FT8Co+A45qRDExVV4Tjit0iUWoX63/d cpaMD+7bNfCwWlMTAT6DKMZWcAQeF+mxJXS45ggGRVWlaUR1DAMq4Nv5P89vGtcFTXIZTv2khWp oMt8+ae0n1JOvPLqIFcRofstyaZ6kyV2IU1PaJ1gWOCEoTgopD5qkWqL048shfFGl5wVRomh8ty tOJwZiBS43EHpcqTU1BakSjOWkwFA0flbpQBgTQomif6j2ECRPtOQ= X-Received: by 2002:a17:90b:4b84:b0:36d:5dbe:2a0d with SMTP id 98e67ed59e1d1-37d1e82238fmr4681205a91.7.1781923495427; Fri, 19 Jun 2026 19:44:55 -0700 (PDT) Received: from cps-manycore-1.. ([147.46.174.222]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37d1600975asm1087971a91.0.2026.06.19.19.44.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Jun 2026 19:44:55 -0700 (PDT) From: Sechang Lim To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , John Fastabend , Jakub Sitnicki , Eduard Zingerman Cc: Eric Dumazet , Kuniyuki Iwashima , Paolo Abeni , Willem de Bruijn , "David S . Miller" , Jakub Kicinski , Martin KaFai Lau , Song Liu , Yonghong Song , Jiri Olsa , Kumar Kartikeya Dwivedi , Simon Horman , Shuah Khan , Jiayuan Chen , Bobby Eshleman , netdev@vger.kernel.org, bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH bpf-next v5 3/3] selftests/bpf: test rejection of a packet-modifying SK_SKB stream parser Date: Sat, 20 Jun 2026 02:44:18 +0000 Message-ID: <20260620024423.4141004-4-rhkrqnwk98@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260620024423.4141004-1-rhkrqnwk98@gmail.com> References: <20260620024423.4141004-1-rhkrqnwk98@gmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Verify that attaching an SK_SKB stream parser that can modify the packet is rejected, while a read-only parser still attaches. Reviewed-by: Jiayuan Chen Signed-off-by: Sechang Lim --- .../selftests/bpf/prog_tests/sockmap_strp.c | 31 +++++++++++++++++++ .../selftests/bpf/progs/test_sockmap_strp.c | 7 +++++ 2 files changed, 38 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_strp.c b/tools/testing/selftests/bpf/prog_tests/sockmap_strp.c index 621b3b71888e..1d7231728eaf 100644 --- a/tools/testing/selftests/bpf/prog_tests/sockmap_strp.c +++ b/tools/testing/selftests/bpf/prog_tests/sockmap_strp.c @@ -431,6 +431,35 @@ static void test_sockmap_strp_verdict(int family, int sotype) test_sockmap_strp__destroy(strp); } +static void test_sockmap_strp_parser_reject(void) +{ + struct test_sockmap_strp *strp = NULL; + int parser_mod, parser_ro, link; + int err, map; + + strp = test_sockmap_strp__open_and_load(); + if (!ASSERT_OK_PTR(strp, "test_sockmap_strp__open_and_load")) + return; + + map = bpf_map__fd(strp->maps.sock_map); + parser_mod = bpf_program__fd(strp->progs.prog_skb_parser_resize); + parser_ro = bpf_program__fd(strp->progs.prog_skb_parser); + + err = bpf_prog_attach(parser_mod, map, BPF_SK_SKB_STREAM_PARSER, 0); + ASSERT_ERR(err, "bpf_prog_attach parser_mod"); + + link = bpf_link_create(parser_ro, map, BPF_SK_SKB_STREAM_PARSER, NULL); + if (!ASSERT_GE(link, 0, "bpf_link_create parser_ro")) + goto out; + + err = bpf_link_update(link, parser_mod, NULL); + ASSERT_ERR(err, "bpf_link_update parser_mod"); +out: + if (link >= 0) + close(link); + test_sockmap_strp__destroy(strp); +} + void test_sockmap_strp(void) { if (test__start_subtest("sockmap strp tcp pass")) @@ -451,4 +480,6 @@ void test_sockmap_strp(void) test_sockmap_strp_multiple_pkt(AF_INET, SOCK_STREAM); if (test__start_subtest("sockmap strp tcp dispatch")) test_sockmap_strp_dispatch_pkt(AF_INET, SOCK_STREAM); + if (test__start_subtest("sockmap strp parser reject pkt mod")) + test_sockmap_strp_parser_reject(); } diff --git a/tools/testing/selftests/bpf/progs/test_sockmap_strp.c b/tools/testing/selftests/bpf/progs/test_sockmap_strp.c index dde3d5bec515..fe88fa6d40bc 100644 --- a/tools/testing/selftests/bpf/progs/test_sockmap_strp.c +++ b/tools/testing/selftests/bpf/progs/test_sockmap_strp.c @@ -50,4 +50,11 @@ int prog_skb_parser_partial(struct __sk_buff *skb) return 10; } +SEC("sk_skb/stream_parser") +int prog_skb_parser_resize(struct __sk_buff *skb) +{ + bpf_skb_change_tail(skb, skb->len, 0); + return skb->len; +} + char _license[] SEC("license") = "GPL"; -- 2.43.0