> 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
