virtio_blk_req_complete releases the request we dereference again for
bdrv_mon_event. Reorder both calls to fix this.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 hw/virtio-blk.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index 9915840..d5e8c79 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -76,8 +76,8 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, 
int error,
         bdrv_mon_event(req->dev->bs, BDRV_ACTION_STOP, is_read);
         vm_stop(0);
     } else {
-        virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR);
         bdrv_mon_event(req->dev->bs, BDRV_ACTION_REPORT, is_read);
+        virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR);
     }
 
     return 1;


Reply via email to