With e5c6de5fa0258 ("bpf, sockmap: Incorrectly handling copied_seq") we
started fixing the available bytes accounting by moving copied_seq to
where the user actually reads the bytes.
However we missed handling MSG_PEEK correctly and we need to ensure
that we don't kfree_skb() a skb off the receive_queue when the
copied_seq number is not incremented by user reads for some time.
v2: drop seq var in tcp_read_skb its no longer necessary per Jakub's
suggestion
John Fastabend (3):
bpf: tcp_read_skb needs to pop skb regardless of seq
bpf: sockmap, do not inc copied_seq when PEEK flag set
bpf: sockmap, add tests for MSG_F_PEEK
net/ipv4/tcp.c | 3 +-
net/ipv4/tcp_bpf.c | 4 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 52 +++++++++++++++++++
3 files changed, 56 insertions(+), 3 deletions(-)
--
2.33.0