On Tue, 12 Dec 2023 at 13:58, Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> wrote: > > Add missing xsk_buff_free() call when __xsk_rcv_zc() failed to produce > descriptor to XSK Rx queue. Acked-by: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> > Fixes: 24ea50127ecf ("xsk: support mbuf on ZC RX") > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > --- > net/xdp/xsk.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c > index 281d49b4fca4..bd4abb200fa9 100644 > --- a/net/xdp/xsk.c > +++ b/net/xdp/xsk.c > @@ -167,8 +167,10 @@ static int xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len) > contd = XDP_PKT_CONTD; > > err = __xsk_rcv_zc(xs, xskb, len, contd); > - if (err || likely(!frags)) > - goto out; > + if (err) > + goto err; > + if (likely(!frags)) > + return 0; > > xskb_list = &xskb->pool->xskb_list; > list_for_each_entry_safe(pos, tmp, xskb_list, xskb_list_node) { > @@ -177,11 +179,13 @@ static int xsk_rcv_zc(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len) > len = pos->xdp.data_end - pos->xdp.data; > err = __xsk_rcv_zc(xs, pos, len, contd); > if (err) > - return err; > + goto err; > list_del(&pos->xskb_list_node); > } > > -out: > + return 0; > +err: > + xsk_buff_free(xdp); > return err; > } > > -- > 2.34.1 > >