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 v3: drop tcp_sock as well its also not used anymore. sorry for the extra noise there. 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 | 10 +--- net/ipv4/tcp_bpf.c | 4 +- .../selftests/bpf/prog_tests/sockmap_basic.c | 52 +++++++++++++++++++ 3 files changed, 57 insertions(+), 9 deletions(-) -- 2.33.0