The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH bpf v1] selftests/bpf: Fix test_maps sockmap failure
@ 2026-07-01  7:14 Jiayuan Chen
  2026-07-01 20:10 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 2+ messages in thread
From: Jiayuan Chen @ 2026-07-01  7:14 UTC (permalink / raw)
  To: bpf
  Cc: Jiayuan Chen, Ihor Solodrai, Andrii Nakryiko, Eduard Zingerman,
	Alexei Starovoitov, Daniel Borkmann, Kumar Kartikeya Dwivedi,
	Martin KaFai Lau, Song Liu, Yonghong Song, Jiri Olsa,
	Emil Tsalapatis, Shuah Khan, Jens Axboe, linux-kselftest,
	linux-kernel

test_maps fails in the sockmap test because sockmap_verdict_prog.c
drops the packet when the first 8 bytes are not directly accessible:
	  if (data + 8 > data_end)
			  return SK_DROP;

The blamed commit removed bpf_skb_pull_data() from the stream parser
program so that the parser no longer modifies the skb. That was needed,
but it also removed an implicit side effect: bpf_skb_pull_data()
linearized enough of the skb for later direct packet access.

In this test, the send side goes through the sockmap SK_MSG path. The
skb can have skb->len == 20 while its linear area is empty, so the
verdict program sees data == data_end and drops the packet even though
the payload length is sufficient.

Keep the parser read-only, and pull the first 8 bytes in the verdict
program before reading or writing them. Reload data/data_end after
bpf_skb_pull_data() as required.

Reported-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Closes: https://lore.kernel.org/bpf/e3a91acd-2b4d-4e93-a3bb-a0e9ee5ede0f@linux.dev/
Fixes: 22a0cc10dacb ("selftests/bpf: don't modify the skb in the strparser parser prog")
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
---
 .../selftests/bpf/progs/sockmap_verdict_prog.c     | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/bpf/progs/sockmap_verdict_prog.c b/tools/testing/selftests/bpf/progs/sockmap_verdict_prog.c
index 0660f29dca955..3177bc5b733ac 100644
--- a/tools/testing/selftests/bpf/progs/sockmap_verdict_prog.c
+++ b/tools/testing/selftests/bpf/progs/sockmap_verdict_prog.c
@@ -44,8 +44,18 @@ int bpf_prog2(struct __sk_buff *skb)
 	__sink(lport);
 	__sink(rport);
 
-	if (data + 8 > data_end)
-		return SK_DROP;
+	if (data + 8 > data_end) {
+		if (bpf_skb_pull_data(skb, 8))
+			return SK_DROP;
+
+		data = (void *)(long)skb->data;
+		data_end = (void *)(long)skb->data_end;
+
+		if (data + 8 > data_end)
+			return SK_DROP;
+
+		d = data;
+	}
 
 	map = d[0];
 	sk = d[1];
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH bpf v1] selftests/bpf: Fix test_maps sockmap failure
  2026-07-01  7:14 [PATCH bpf v1] selftests/bpf: Fix test_maps sockmap failure Jiayuan Chen
@ 2026-07-01 20:10 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-07-01 20:10 UTC (permalink / raw)
  To: Jiayuan Chen
  Cc: bpf, ihor.solodrai, andrii, eddyz87, ast, daniel, memxor,
	martin.lau, song, yonghong.song, jolsa, emil, shuah, axboe,
	linux-kselftest, linux-kernel

Hello:

This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Wed,  1 Jul 2026 15:14:22 +0800 you wrote:
> test_maps fails in the sockmap test because sockmap_verdict_prog.c
> drops the packet when the first 8 bytes are not directly accessible:
> 	  if (data + 8 > data_end)
> 			  return SK_DROP;
> 
> The blamed commit removed bpf_skb_pull_data() from the stream parser
> program so that the parser no longer modifies the skb. That was needed,
> but it also removed an implicit side effect: bpf_skb_pull_data()
> linearized enough of the skb for later direct packet access.
> 
> [...]

Here is the summary with links:
  - [bpf,v1] selftests/bpf: Fix test_maps sockmap failure
    https://git.kernel.org/bpf/bpf-next/c/27a0f3635d86

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-01 20:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-01  7:14 [PATCH bpf v1] selftests/bpf: Fix test_maps sockmap failure Jiayuan Chen
2026-07-01 20:10 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox