[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250709-sockmap-splice-v3-0-b23f345a67fc@datadoghq.com>
Date: Wed, 09 Jul 2025 14:47:56 +0200
From: Vincent Whitchurch via B4 Relay <devnull+vincent.whitchurch.datadoghq.com@...nel.org>
To: John Fastabend <john.fastabend@...il.com>,
Jakub Sitnicki <jakub@...udflare.com>
Cc: Kuniyuki Iwashima <kuniyu@...gle.com>, Jakub Kicinski <kuba@...nel.org>,
netdev@...r.kernel.org, bpf@...r.kernel.org,
Vincent Whitchurch <vincent.whitchurch@...adoghq.com>
Subject: [PATCH bpf-next v3 0/5] sockmap: Fix reading with splice(2)
I noticed that if the verdict callback returns SK_PASS, using splice(2)
to read from a socket in a sockmap does not work since it never sees the
data queued on to it. As far as I can see, this is not a regression but
just something that has never worked, but it does make sockmap unusable
if you can't guarantee that the programs using the socket will not use
splice(2).
This series attempts to fix it and add a test for it.
---
Changes in v3:
- Rebase on latest bpf-next/master
- Link to v2: https://lore.kernel.org/r/20250609-sockmap-splice-v2-0-9c50645cfa32@datadoghq.com
Changes in v2:
- Rebase on latest bpf-next/master
- Remove unnecessary change in inet_dgram_ops
- Remove ->splice_read NULL check in inet_splice_read()
- Use INDIRECT_CALL_1() in inet_splice_read()
- Include test case in default test suite in test_sockmap
- Link to v1: https://lore.kernel.org/r/20240606-sockmap-splice-v1-0-4820a2ab14b5@datadoghq.com
---
Vincent Whitchurch (5):
net: Add splice_read to prot
tcp_bpf: Fix reading with splice(2)
selftests/bpf: sockmap: Exit with error on failure
selftests/bpf: sockmap: Allow SK_PASS in verdict
selftests/bpf: sockmap: Add splice + SK_PASS regression test
include/net/inet_common.h | 3 +
include/net/sock.h | 3 +
net/ipv4/af_inet.c | 13 ++++-
net/ipv4/tcp_bpf.c | 9 +++
net/ipv4/tcp_ipv4.c | 1 +
net/ipv6/af_inet6.c | 2 +-
net/ipv6/tcp_ipv6.c | 1 +
tools/testing/selftests/bpf/test_sockmap.c | 90 +++++++++++++++++++++++++++++-
8 files changed, 118 insertions(+), 4 deletions(-)
---
base-commit: ad97cb2ed06a6ba9025fd8bd14fa24369550cbb5
change-id: 20240606-sockmap-splice-d371ac07d7b4
Best regards,
--
Vincent Whitchurch <vincent.whitchurch@...adoghq.com>
Powered by blists - more mailing lists