On Wed, Sep 30, 2026 at 04:19:52PM +0800, Jianlin Shi wrote:
> virtnet_probe() calls init_vqs() before virtnet_init_irq_moder().
> The failure path used "goto free", which only calls free_netdev() and
> skips virtio_reset_device() and virtnet_del_vqs(). The virtqueues and
> their DMA mappings leak.
>
> Use the existing free_irq_moder label, as virtnet_create_page_pools()
> already does. This is safe only after net_dim_init_irq_moder() clears
> dev->irq_moder on failure; otherwise virtnet_free_irq_moder() would
> free the dangling pointer.
>
> Fixes: dcb67f6a9ead6 ("virtio-net: support dim profile fine-tuning")
> Signed-off-by: Jianlin Shi <[email protected]>
I expect v2 of this.
> ---
> drivers/net/virtio_net.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index e34c52d059d3..ef61097c4404 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -6996,7 +6996,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>
> err = virtnet_init_irq_moder(vi);
> if (err)
> - goto free;
> + goto free_irq_moder;
> }
>
> /* Create page pools for receive queues.
> --
> 2.43.0