Il 23/05/2013 16:48, Badari Pulavarty ha scritto:
>> The common virtio-scsi code in QEMU should guard against this.  In
>> virtio-blk data plane I hit a similar case and ended up starting the
>> data plane thread (equivalent to vhost here) *before* the status
>> register is set to DRIVER_OK.
> 
> Thats exactly what my debug in vhost_scsi_set_status() shows.
> 
> set status started 0 val 0
> set status started 0 val 0
> set status started 0 val 0
> set status started 0 val 0
> set status started 0 val 0
> set status started 0 val 3
> Program received signal SIGSEGV, Segmentation fault.
> 
> We never got a chance to call vhost_scsi_start() as we are waiting
> for DRIVER_OK.

This is the fix in SeaBIOS:

commit 5a7730db57ab0715223421e65b54fb50d6fefe5c
Author: Asias He <as...@redhat.com>
Date:   Fri Mar 15 09:45:15 2013 +0800

    virtio-scsi: Set _DRIVER_OK flag before scsi target scanning

    Before we start scsi target scanning, we need to set the
    VIRTIO_CONFIG_S_DRIVER_OK flag so the device can do setup properly.

    This fix a bug when booting tcm_vhost with seabios.

    Signed-off-by: Asias He <as...@redhat.com>
    Acked-by: Paolo Bonzini <pbonz...@redhat.com>



Still, Gleb is right that SeaBIOS should not be able to crash QEMU;
exit(1) is fine, SIGSEGV is not.

Paolo

Reply via email to