mbox series

[bpf-next,v5,00/11] sockmap: add sockmap support for unix datagram socket

Message ID 20210704190252.11866-1-xiyou.wangcong@gmail.com (mailing list archive)
Headers show
Series sockmap: add sockmap support for unix datagram socket | expand

Message

Cong Wang July 4, 2021, 7:02 p.m. UTC
From: Cong Wang <cong.wang@bytedance.com>

This is the last patchset of the original large patchset. In the
previous patchset, a new BPF sockmap program BPF_SK_SKB_VERDICT
was introduced and UDP began to support it too. In this patchset,
we add BPF_SK_SKB_VERDICT support to Unix datagram socket, so that
we can finally splice Unix datagram socket and UDP socket. Please
check each patch description for more details.

To see the big picture, the previous patchsets are available here:
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=1e0ab70778bd86a90de438cc5e1535c115a7c396
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=89d69c5d0fbcabd8656459bc8b1a476d6f1efee4

and this patchset is available here:
https://github.com/congwang/linux/tree/sockmap3

---
v5: lift socket state check for dgram
    remove ->unhash() case
    add retries for EAGAIN in all test cases
    remove an unused parameter of __unix_dgram_recvmsg()
    rebase on the latest bpf-next

v4: fix af_unix disconnect case
    add unix_unhash()
    split out two small patches
    reduce u->iolock critical section
    remove an unused parameter of __unix_dgram_recvmsg()

v3: fix Kconfig dependency
    make unix_read_sock() static
    fix a UAF in unix_release()
    add a missing header unix_bpf.c

v2: separate out from the original large patchset
    rebase to the latest bpf-next
    clean up unix_read_sock()
    export sock_map_close()
    factor out some helpers in selftests for code reuse

Cong Wang (11):
  sock_map: relax config dependency to CONFIG_NET
  sock_map: lift socket state restriction for datagram sockets
  af_unix: implement ->read_sock() for sockmap
  af_unix: set TCP_ESTABLISHED for datagram sockets too
  af_unix: add a dummy ->close() for sockmap
  af_unix: implement ->psock_update_sk_prot()
  af_unix: implement unix_dgram_bpf_recvmsg()
  selftests/bpf: factor out udp_socketpair()
  selftests/bpf: factor out add_to_sockmap()
  selftests/bpf: add a test case for unix sockmap
  selftests/bpf: add test cases for redirection between udp and unix

 MAINTAINERS                                   |   1 +
 include/linux/bpf.h                           |  38 +-
 include/net/af_unix.h                         |  12 +
 kernel/bpf/Kconfig                            |   2 +-
 net/core/Makefile                             |   2 -
 net/core/sock_map.c                           |  22 +-
 net/ipv4/udp_bpf.c                            |   1 -
 net/unix/Makefile                             |   1 +
 net/unix/af_unix.c                            |  85 +++-
 net/unix/unix_bpf.c                           | 122 ++++++
 .../selftests/bpf/prog_tests/sockmap_listen.c | 406 ++++++++++++++----
 11 files changed, 564 insertions(+), 128 deletions(-)
 create mode 100644 net/unix/unix_bpf.c

Comments

John Fastabend July 12, 2021, 5:02 p.m. UTC | #1
Cong Wang wrote:
> From: Cong Wang <cong.wang@bytedance.com>
> 
> This is the last patchset of the original large patchset. In the
> previous patchset, a new BPF sockmap program BPF_SK_SKB_VERDICT
> was introduced and UDP began to support it too. In this patchset,
> we add BPF_SK_SKB_VERDICT support to Unix datagram socket, so that
> we can finally splice Unix datagram socket and UDP socket. Please
> check each patch description for more details.
> 
> To see the big picture, the previous patchsets are available here:
> https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=1e0ab70778bd86a90de438cc5e1535c115a7c396
> https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=89d69c5d0fbcabd8656459bc8b1a476d6f1efee4
> 
> and this patchset is available here:
> https://github.com/congwang/linux/tree/sockmap3

LGTM Thanks. One nit around kfree of packets but its not specific
to this series and I have a proposed fix coming shortly so no
reason to hold this up.

Acked-by: John Fastabend <john.fastabend@gmail.com>
Alexei Starovoitov July 16, 2021, 1:31 a.m. UTC | #2
On Mon, Jul 12, 2021 at 10:03 AM John Fastabend
<john.fastabend@gmail.com> wrote:
>
> Cong Wang wrote:
> > From: Cong Wang <cong.wang@bytedance.com>
> >
> > This is the last patchset of the original large patchset. In the
> > previous patchset, a new BPF sockmap program BPF_SK_SKB_VERDICT
> > was introduced and UDP began to support it too. In this patchset,
> > we add BPF_SK_SKB_VERDICT support to Unix datagram socket, so that
> > we can finally splice Unix datagram socket and UDP socket. Please
> > check each patch description for more details.
> >
> > To see the big picture, the previous patchsets are available here:
> > https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=1e0ab70778bd86a90de438cc5e1535c115a7c396
> > https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=89d69c5d0fbcabd8656459bc8b1a476d6f1efee4
> >
> > and this patchset is available here:
> > https://github.com/congwang/linux/tree/sockmap3
>
> LGTM Thanks. One nit around kfree of packets but its not specific
> to this series and I have a proposed fix coming shortly so no
> reason to hold this up.
>
> Acked-by: John Fastabend <john.fastabend@gmail.com>

Applied. Thanks