Message ID | 1602070946-11154-1-git-send-email-magnus.karlsson@gmail.com |
---|---|
State | New |
Headers | show |
Series | [bpf-next,v2] libbpf: fix compatibility problem in xsk_socket__create | expand |
Hello: This patch was applied to bpf/bpf-next.git (refs/heads/master): On Wed, 7 Oct 2020 13:42:26 +0200 you wrote: > From: Magnus Karlsson <magnus.karlsson@intel.com> > > Fix a compatibility problem when the old XDP_SHARED_UMEM mode is used > together with the xsk_socket__create() call. In the old XDP_SHARED_UMEM > mode, only sharing of the same device and queue id was allowed, and in > this mode, the fill ring and completion ring were shared between the > AF_XDP sockets. Therefore, it was perfectly fine to call the > xsk_socket__create() API for each socket and not use the new > xsk_socket__create_shared() API. This behavior was ruined by the > commit introducing XDP_SHARED_UMEM support between different devices > and/or queue ids. This patch restores the ability to use > xsk_socket__create in these circumstances so that backward > compatibility is not broken. > > [...] Here is the summary with links: - [bpf-next,v2] libbpf: fix compatibility problem in xsk_socket__create https://git.kernel.org/bpf/bpf-next/c/80348d8867c6 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c index 30b4ca5..e3c98c0 100644 --- a/tools/lib/bpf/xsk.c +++ b/tools/lib/bpf/xsk.c @@ -705,7 +705,7 @@ int xsk_socket__create_shared(struct xsk_socket **xsk_ptr, struct xsk_ctx *ctx; int err, ifindex; - if (!umem || !xsk_ptr || !(rx || tx) || !fill || !comp) + if (!umem || !xsk_ptr || !(rx || tx)) return -EFAULT; xsk = calloc(1, sizeof(*xsk)); @@ -735,6 +735,11 @@ int xsk_socket__create_shared(struct xsk_socket **xsk_ptr, ctx = xsk_get_ctx(umem, ifindex, queue_id); if (!ctx) { + if (!fill || !comp) { + err = -EFAULT; + goto out_socket; + } + ctx = xsk_create_ctx(xsk, umem, ifindex, ifname, queue_id, fill, comp); if (!ctx) {