lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 015/453] xsk: Replace datagram_poll by sock_poll_wait
    Date
    From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>

    [ Upstream commit f5da54187e33dce9bea63170667dbb0ca8d98194 ]

    datagram_poll will judge the current socket status (EPOLLIN, EPOLLOUT)
    based on the traditional socket information (eg: sk_wmem_alloc), but
    this does not apply to xsk. So this patch uses sock_poll_wait instead of
    datagram_poll, and the mask is calculated by xsk_poll.

    Fixes: c497176cb2e4 ("xsk: add Rx receive functions and poll support")
    Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Link: https://lore.kernel.org/bpf/e82f4697438cd63edbf271ebe1918db8261b7c09.1606555939.git.xuanzhuo@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/xdp/xsk.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
    index 04652797cd374..2bc0d6e3e124c 100644
    --- a/net/xdp/xsk.c
    +++ b/net/xdp/xsk.c
    @@ -429,11 +429,13 @@ static int xsk_sendmsg(struct socket *sock, struct msghdr *m, size_t total_len)
    static __poll_t xsk_poll(struct file *file, struct socket *sock,
    struct poll_table_struct *wait)
    {
    - __poll_t mask = datagram_poll(file, sock, wait);
    + __poll_t mask = 0;
    struct sock *sk = sock->sk;
    struct xdp_sock *xs = xdp_sk(sk);
    struct xdp_umem *umem;

    + sock_poll_wait(file, sock, wait);
    +
    if (unlikely(!xsk_is_bound(xs)))
    return mask;

    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 16:55    [W:2.252 / U:0.552 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site