mbox series

[bpf,v3,0/8] sock_map: some bug fixes and improvements

Message ID 20210527011155.10097-1-xiyou.wangcong@gmail.com (mailing list archive)
Headers show
Series sock_map: some bug fixes and improvements | expand

Message

Cong Wang May 27, 2021, 1:11 a.m. UTC
From: Cong Wang <cong.wang@bytedance.com>

This patchset contains a few bug fixes and improvements for sock_map.

Patch 1 improves recvmsg() accuracy for UDP, patch 2 improves UDP
non-blocking read() by retrying on EAGAIN. With both of them, the
failure rate of the UDP test case goes down from 10% to 1%.

Patch 3 is memory leak fix I posted, no change since v1. The rest
patches address similar memory leaks or improve error handling,
including one increases sk_drops counter for error cases. Please
check each patch description for more details.

---
v3: add another bug fix as patch 4
    update patch 5 accordingly
    address John's review on the last patch
    fix a few typos in patch descriptions

v2: group all patches together
    set max for retries of EAGAIN

Cong Wang (8):
  skmsg: improve udp_bpf_recvmsg() accuracy
  selftests/bpf: Retry for EAGAIN in udp_redir_to_connected()
  udp: fix a memory leak in udp_read_sock()
  skmsg: clear skb redirect pointer before dropping it
  skmsg: fix a memory leak in sk_psock_verdict_apply()
  skmsg: teach sk_psock_verdict_apply() to return errors
  skmsg: pass source psock to sk_psock_skb_redirect()
  skmsg: increase sk->sk_drops when dropping packets

 include/linux/skmsg.h                         |  2 -
 net/core/skmsg.c                              | 82 +++++++++----------
 net/ipv4/tcp_bpf.c                            | 24 +++++-
 net/ipv4/udp.c                                |  2 +
 net/ipv4/udp_bpf.c                            | 47 +++++++++--
 .../selftests/bpf/prog_tests/sockmap_listen.c |  7 +-
 6 files changed, 112 insertions(+), 52 deletions(-)

Comments

John Fastabend June 2, 2021, 3:46 a.m. UTC | #1
Cong Wang wrote:
> From: Cong Wang <cong.wang@bytedance.com>
> 
> This patchset contains a few bug fixes and improvements for sock_map.
> 
> Patch 1 improves recvmsg() accuracy for UDP, patch 2 improves UDP
> non-blocking read() by retrying on EAGAIN. With both of them, the
> failure rate of the UDP test case goes down from 10% to 1%.
> 
> Patch 3 is memory leak fix I posted, no change since v1. The rest
> patches address similar memory leaks or improve error handling,
> including one increases sk_drops counter for error cases. Please
> check each patch description for more details.

For the series. My initial concern about marking BPF drops as
socket drops appears to be common so I guess lets do it.

Acked-by: John Fastabend <john.fastabend@gmail.com>

> 
> ---
> v3: add another bug fix as patch 4
>     update patch 5 accordingly
>     address John's review on the last patch
>     fix a few typos in patch descriptions
> 
> v2: group all patches together
>     set max for retries of EAGAIN
> 
> Cong Wang (8):
>   skmsg: improve udp_bpf_recvmsg() accuracy
>   selftests/bpf: Retry for EAGAIN in udp_redir_to_connected()
>   udp: fix a memory leak in udp_read_sock()
>   skmsg: clear skb redirect pointer before dropping it
>   skmsg: fix a memory leak in sk_psock_verdict_apply()
>   skmsg: teach sk_psock_verdict_apply() to return errors
>   skmsg: pass source psock to sk_psock_skb_redirect()
>   skmsg: increase sk->sk_drops when dropping packets
> 
>  include/linux/skmsg.h                         |  2 -
>  net/core/skmsg.c                              | 82 +++++++++----------
>  net/ipv4/tcp_bpf.c                            | 24 +++++-
>  net/ipv4/udp.c                                |  2 +
>  net/ipv4/udp_bpf.c                            | 47 +++++++++--
>  .../selftests/bpf/prog_tests/sockmap_listen.c |  7 +-
>  6 files changed, 112 insertions(+), 52 deletions(-)
> 
> -- 
> 2.25.1
>