On 2016/9/21 21:13, Greg Kurz wrote: > This series is a follow up to Stefan's work to eradicate most calls to > exit() we currently have in the virtio code. > > It addresses all exit() call sites in the blk, net and scsi device code, > where the error is about a missing or malformed in/out header sent by > the guest. They are converted to use virtio_error() and stop any processing, > instead of exiting. > Actually if you just stop procesing when encounter a missing in/out header but send a interrupt to the guest, the guest maybe be stuck. virtio_net_handle_ctrl() is an example, the guest frontend driver infinite loop to wait the interrupt's coming. The guest can't work anymore though you don't exit the Qemu process .
Regards, -Gonglei > The remaining call sites are related to a host misconfiguration or a > migration stream issue. > > The 9P code currently calls assert() instead of exit(), but it also about > malformed or missing headers, so it gets converted the same way. > > Next work will be to check all assert() call sites in the device code, in > case some of them actually refer to a bug in the guest, and should be > converted to use virtio_error() as well. > > --- > > Greg Kurz (7): > virtio-9p: handle handle_9p_output() error > virtio-blk: handle virtio_blk_handle_request() errors > virtio-net: handle virtio_net_handle_ctrl() error > virtio-net: handle virtio_net_receive() errors > virtio-net: handle virtio_net_flush_tx() errors > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error() > virtio-scsi: handle virtio_scsi_set_config() error > > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++-- > hw/block/virtio-blk.c | 27 +++++++++++++++-------- > hw/net/virtio-net.c | 51 > +++++++++++++++++++++++++------------------- > hw/scsi/virtio-scsi.c | 21 ++++++++++-------- > 4 files changed, 70 insertions(+), 43 deletions(-) > > -- > Greg > > > >