> On Sun, 20 Sep 2026 09:55:09 +0200 Lorenzo Bianconi wrote: > > In mvneta_swbm_add_rx_fragment() the XDP pfmemalloc flag is set on the > > xdp_buff if the page under pressure is a pfmemalloc one. The xdp_buff is > > reused for the next packet and the flag is never cleared, so a pfmemalloc > > fragment in one packet wrongly marks the skb of a subsequent packet as > > pfmemalloc. Clear the flag in mvneta_swbm_rx_frame(), which is invoked for > > each new frame. > > > > Fixes: ed7a58cb40bd ("net: marvell: rely on xdp_update_skb_shared_info utility routine") > > Signed-off-by: Lorenzo Bianconi > > --- > > drivers/net/ethernet/marvell/mvneta.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c > > index 543e566425c1..32416999f3d6 100644 > > --- a/drivers/net/ethernet/marvell/mvneta.c > > +++ b/drivers/net/ethernet/marvell/mvneta.c > > @@ -2341,6 +2341,7 @@ mvneta_swbm_rx_frame(struct mvneta_port *pp, > > /* Prefetch header */ > > prefetch(data); > > xdp_buff_clear_frags_flag(xdp); > > + xdp_buff_clear_frag_pfmemalloc(xdp); > > bit of a trap for your future self to clear the flags one by one. > Should we not write the flags to 0 ? Or maybe add: > > /* Clear xdp_buf state for reuse on the same ring */ > static __always_inline void xdp_reinit_buff(struct xdp_buff *xdp) > { > xdp->flags = 0; > } > > and call that? ack, I agree. I will fix it in v2. Regards, Lorenzo > > > xdp_prepare_buff(xdp, data, pp->rx_offset_correction + MVNETA_MH_SIZE, > > data_len, true); > > } >