aboutsummaryrefslogtreecommitdiff
path: root/block.c
diff options
context:
space:
mode:
authorRyan Harper <ryanh@us.ibm.com>2011-03-07 10:01:04 -0600
committerKevin Wolf <kwolf@redhat.com>2011-03-15 13:21:14 +0100
commit301db7c2dd769d48e97c9a766520f8affff76cd7 (patch)
treea6df649573db46c5dfb4025e38269540613ddc01 /block.c
parent4e59b545868a5ee5f59b346337f0c44209929334 (diff)
downloadqemu-301db7c2dd769d48e97c9a766520f8affff76cd7.zip
qemu-301db7c2dd769d48e97c9a766520f8affff76cd7.tar.gz
qemu-301db7c2dd769d48e97c9a766520f8affff76cd7.tar.bz2
Don't allow multiwrites against a block device without underlying medium
If the block device has been closed, we no longer have a medium to submit IO against, check for this before submitting io. This prevents a segfault further in the code where we dereference elements of the block driver. Signed-off-by: Ryan Harper <ryanh@us.ibm.com> Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block.c')
-rw-r--r--block.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/block.c b/block.c
index 0559d83..c8e2f97 100644
--- a/block.c
+++ b/block.c
@@ -2398,6 +2398,14 @@ int bdrv_aio_multiwrite(BlockDriverState *bs, BlockRequest *reqs, int num_reqs)
MultiwriteCB *mcb;
int i;
+ /* don't submit writes if we don't have a medium */
+ if (bs->drv == NULL) {
+ for (i = 0; i < num_reqs; i++) {
+ reqs[i].error = -ENOMEDIUM;
+ }
+ return -1;
+ }
+
if (num_reqs == 0) {
return 0;
}