From 50a10538e4c24b35de1ebd99b31e7abf5843b515 Mon Sep 17 00:00:00 2001 From: hanzhijian Date: Thu, 20 Aug 2026 22:45:41 +0800 Subject: [PATCH] [drivers][virtio] Fix RX buffer leak on pbuf allocation failure --- components/drivers/virtio/virtio-net.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/components/drivers/virtio/virtio-net.c b/components/drivers/virtio/virtio-net.c index e2e1b559a661..c078425cc365 100644 --- a/components/drivers/virtio/virtio-net.c +++ b/components/drivers/virtio/virtio-net.c @@ -124,6 +124,19 @@ static struct pbuf *virtio_net_rx(rt_device_t dev) if (!p) { + level = rt_spin_lock_irqsave(&vnet->rx_lock); + + if (!rt_virtqueue_poll(vq, packet - vnet->rx_packet)) + { + rt_list_remove(&vq->user_list); + } + + rt_virtqueue_add_inbuf(vq, packet, sizeof(*packet)); + + rt_virtqueue_kick(vq); + + rt_spin_unlock_irqrestore(&vnet->rx_lock, level); + return RT_NULL; }