]> git.proxmox.com Git - qemu.git/commitdiff
virtio-blk: Return UNSUPP for unknown request types
authorAlexey Zaytsev <alexey.zaytsev@gmail.com>
Thu, 13 Dec 2012 07:03:43 +0000 (09:03 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Wed, 2 Jan 2013 15:08:53 +0000 (16:08 +0100)
Currently, all unknown requests are treated as VIRTIO_BLK_T_IN

Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
hw/virtio-blk.c

index 92c745a316e24a1ce394a3e76beecf3965acc602..df57b35f1b7157af4c2ea77285c2554dc7e9db7d 100644 (file)
@@ -398,10 +398,14 @@ static void virtio_blk_handle_request(VirtIOBlockReq *req,
         qemu_iovec_init_external(&req->qiov, &req->elem.out_sg[1],
                                  req->elem.out_num - 1);
         virtio_blk_handle_write(req, mrb);
-    } else {
+    } else if (type == VIRTIO_BLK_T_IN || type == VIRTIO_BLK_T_BARRIER) {
+        /* VIRTIO_BLK_T_IN is 0, so we can't just & it. */
         qemu_iovec_init_external(&req->qiov, &req->elem.in_sg[0],
                                  req->elem.in_num - 1);
         virtio_blk_handle_read(req);
+    } else {
+        virtio_blk_req_complete(req, VIRTIO_BLK_S_UNSUPP);
+        g_free(req);
     }
 }