Re: [PATCH net-next v3 01/15] gve: don't pass in unused parameter to gve_adminq_free

[email protected] Tue, 04 Aug 2026 18:46:58 +0000
Newsgroups org.kernel.vger.bpf
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Memory leak of the adminq DMA pool during device reset due to an early return in gve_adminq_free().
--

--- Patch [1]: [PATCH net-next v3 01/15] gve: don't pass in unused parameter to gve_adminq_free ---
commit 3b6d21bb1589b652e4e7777b1b6be55fff25b9f0
Author: Harshitha Ramamurthy <[email protected]>

gve: don't pass in unused parameter to gve_adminq_free

This commit cleans up gve_adminq_free by removing an unused parameter.

> diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/ethernet/google/gve/gve_adminq.c
> index 08587bf40ed4a..70ffed8b52c3d 100644
> --- a/drivers/net/ethernet/google/gve/gve_adminq.c
> +++ b/drivers/net/ethernet/google/gve/gve_adminq.c
[ ... ]
> @@ -385,7 +385,7 @@ void gve_adminq_release(struct gve_priv *priv)
>  	gve_clear_admin_queue_ok(priv);
>  }
>  
> -void gve_adminq_free(struct device *dev, struct gve_priv *priv)
> +void gve_adminq_free(struct gve_priv *priv)
>  {
>  	if (!gve_get_admin_queue_ok(priv))
>  		return;

[Severity: High]
This isn't a bug introduced by this patch, but does returning early here
cause a memory leak of the adminq DMA pool during a device reset?

When a reset happens, gve_reset_and_teardown() calls gve_trigger_reset()
which clears the admin queue OK flag. It then calls
gve_teardown_priv_resources() which calls gve_adminq_free():

drivers/net/ethernet/google/gve/gve_main.c:gve_reset_and_teardown() {
	...
	gve_trigger_reset(priv);
	/* With the reset having already happened, close cannot fail */
	if (was_up)
		gve_close(priv->dev);
	gve_teardown_priv_resources(priv);
	...
}

Because the OK flag is cleared, gve_adminq_free() returns early, skipping
the dma_pool_free() and dma_pool_destroy() calls, leaking the allocations.
During subsequent recovery, gve_init_priv() calls gve_adminq_alloc() which
overwrites priv->adminq_pool and priv->adminq with new allocations.

-- 
Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=1