On Fri, 1 Dec 2023 at 07:11, Yewon Choi <woni9911@xxxxxxxxx> wrote: > > In xsk_poll(), checking available events and setting mask bits should > be executed only when a socket has been bound. Setting mask bits for > unbound socket is meaningless. > Currently, it checks events even when xsk_check_common() failed. > To prevent this, we move goto location (skip_tx) after that checking. Thanks for the fix. Acked-by: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> > Fixes: 1596dae2f17e ("xsk: check IFF_UP earlier in Tx path") > Signed-off-by: Yewon Choi <woni9911@xxxxxxxxx> > --- > net/xdp/xsk.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c > index ae9f8cb611f6..1e5a65326d1d 100644 > --- a/net/xdp/xsk.c > +++ b/net/xdp/xsk.c > @@ -947,7 +947,7 @@ static __poll_t xsk_poll(struct file *file, struct socket *sock, > > rcu_read_lock(); > if (xsk_check_common(xs)) > - goto skip_tx; > + goto out; > > pool = xs->pool; > > @@ -959,12 +959,12 @@ static __poll_t xsk_poll(struct file *file, struct socket *sock, > xsk_generic_xmit(sk); > } > > -skip_tx: > if (xs->rx && !xskq_prod_is_empty(xs->rx)) > mask |= EPOLLIN | EPOLLRDNORM; > if (xs->tx && xsk_tx_writeable(xs)) > mask |= EPOLLOUT | EPOLLWRNORM; > > +out: > rcu_read_unlock(); > return mask; > } > -- > 2.37.3 > >