summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Washington <joshwash@google.com>2026-09-30 14:47:33 -0700
committerJakub Kicinski <kuba@kernel.org>2026-10-05 16:59:18 -0700
commit73670ddb91a4d22e1deb3efd962242de1ec48e90 (patch)
tree83ea28e61024d1d66945a83ad457e1d83ec0106e
parentd4bfe16cbd1d05a8584b8604de28cb323cce1801 (diff)
downloadlinux-next-73670ddb91a4d22e1deb3efd962242de1ec48e90.tar.gz
linux-next-73670ddb91a4d22e1deb3efd962242de1ec48e90.zip
gve: fix XSK buffer leak when rings are stopped
GVE does not free XSK buffers when resetting ring state as a part of stopping queues. This causes all XSK buffers which are posted to the NIC to be leaked. Free XSK buffers attached to an allocated buf_state when stopping rings. This issue was hit in production. Fixes: c1fffc5d66a7 ("gve: implement DQO RX datapath and control path for AF_XDP zero-copy") Cc: stable@vger.kernel.org Reviewed-by: Tim Hostetler <thostet@google.com> Reviewed-by: Jordan Rhee <jordanrhee@google.com> Signed-off-by: Joshua Washington <joshwash@google.com> Link: https://patch.msgid.link/20260930214735.3288780-2-joshwash@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/ethernet/google/gve/gve_rx_dqo.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/ethernet/google/gve/gve_rx_dqo.c
index 5cf242b28557..a2c4a08ce68d 100644
--- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c
+++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c
@@ -113,6 +113,12 @@ static void gve_rx_reset_ring_dqo(struct gve_priv *priv, int idx)
gve_free_to_page_pool(rx, bs, false);
else
gve_free_qpl_page_dqo(bs);
+
+ if (gve_buf_state_is_allocated(rx, bs) &&
+ bs->xsk_buff) {
+ xsk_buff_free(bs->xsk_buff);
+ bs->xsk_buff = NULL;
+ }
}
}