> From: Jinqian Yang <[email protected]>
> 
> [ Upstream commit 0d0eff39ceb3dcbf7847a6f4517086c207c60081 ]
> 
> virtnet_poll_cleantx() contains a do-while loop that cleans up
> transmitted TX buffers and calls virtqueue_enable_cb_delayed() to check
> whether more buffers need processing. When the virtio backend stops
> responding during guest reboot, used->idx is never updated, so
> virtqueue_enable_cb_delayed() always returns false and the loop never
> terminates. Then it will block reboot process, and the guest will hang.
> 
> The problem occurs during guest reboot under network traffic:
> 
>   1. kernel_restart() -> device_shutdown() traverses the device list
>   2. virtio_dev_shutdown() calls virtio_break_device() which sets
> [ ... ]
> Signed-off-by: Jinqian Yang <[email protected]>
> Reviewed-by: Xuan Zhuo <[email protected]>
> Signed-off-by: Michael S. Tsirkin <[email protected]>
> Message-ID: <[email protected]>
> Signed-off-by: Sasha Levin <[email protected]>

Sashiko has reviewed this patch and found no issues.

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


Reply via email to