diff options
author | Ryan Harper <ryanh@us.ibm.com> | 2011-03-07 10:01:04 -0600 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-03-15 13:21:14 +0100 |
commit | 301db7c2dd769d48e97c9a766520f8affff76cd7 (patch) | |
tree | a6df649573db46c5dfb4025e38269540613ddc01 /block.c | |
parent | 4e59b545868a5ee5f59b346337f0c44209929334 (diff) | |
download | qemu-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.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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; } |