lkml.org 
[lkml]   [2019]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.0 016/262] xsk: fix to reject invalid flags in xsk_bind
    Date
    From: Björn Töpel <bjorn.topel@intel.com>

    [ Upstream commit f54ba391d88f5a5d032175b4c308c176e34b80b7 ]

    Passing a non-existing flag in the sxdp_flags member of struct
    sockaddr_xdp was, incorrectly, silently ignored. This patch addresses
    that behavior, and rejects any non-existing flags.

    We have examined existing user space code, and to our best knowledge,
    no one is relying on the current incorrect behavior. AF_XDP is still
    in its infancy, so from our perspective, the risk of breakage is very
    low, and addressing this problem now is important.

    Fixes: 965a99098443 ("xsk: add support for bind for Rx")
    Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/xdp/xsk.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
    index 85e4fe4f18cc..f3031c8907d9 100644
    --- a/net/xdp/xsk.c
    +++ b/net/xdp/xsk.c
    @@ -407,6 +407,10 @@ static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
    if (sxdp->sxdp_family != AF_XDP)
    return -EINVAL;

    + flags = sxdp->sxdp_flags;
    + if (flags & ~(XDP_SHARED_UMEM | XDP_COPY | XDP_ZEROCOPY))
    + return -EINVAL;
    +
    mutex_lock(&xs->mutex);
    if (xs->dev) {
    err = -EBUSY;
    @@ -425,7 +429,6 @@ static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
    }

    qid = sxdp->sxdp_queue_id;
    - flags = sxdp->sxdp_flags;

    if (flags & XDP_SHARED_UMEM) {
    struct xdp_sock *umem_xs;
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-03-27 20:35    [W:2.324 / U:0.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site