[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 18/23] blockdev: Fix drive_del not to crash when dri
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 18/23] blockdev: Fix drive_del not to crash when drive is not in use |
Date: |
Mon, 24 Jan 2011 22:10:47 +0100 |
From: Markus Armbruster <address@hidden>
Watch this:
(qemu) drive_add 0 if=none,file=tmp.img
OK
(qemu) info block
none0: type=hd removable=0 file=tmp.img ro=0 drv=raw encrypted=0
(qemu) drive_del none0
Segmentation fault (core dumped)
do_drive_del()'s code to clean up the pointer from a qdev using the
drive back to the drive needs to check whether such a device exists.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
blockdev.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/blockdev.c b/blockdev.c
index 0621390..f7f591f 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -687,13 +687,15 @@ int do_drive_del(Monitor *mon, const QDict *qdict,
QObject **ret_data)
/* clean up guest state from pointing to host resource by
* finding and removing DeviceState "drive" property */
- for (prop = bs->peer->info->props; prop && prop->name; prop++) {
- if (prop->info->type == PROP_TYPE_DRIVE) {
- ptr = qdev_get_prop_ptr(bs->peer, prop);
- if ((*ptr) == bs) {
- bdrv_detach(bs, bs->peer);
- *ptr = NULL;
- break;
+ if (bs->peer) {
+ for (prop = bs->peer->info->props; prop && prop->name; prop++) {
+ if (prop->info->type == PROP_TYPE_DRIVE) {
+ ptr = qdev_get_prop_ptr(bs->peer, prop);
+ if (*ptr == bs) {
+ bdrv_detach(bs, bs->peer);
+ *ptr = NULL;
+ break;
+ }
}
}
}
--
1.7.2.3
- [Qemu-devel] [PATCH 08/23] ide: kill ide_dma_submit_check, (continued)
- [Qemu-devel] [PATCH 08/23] ide: kill ide_dma_submit_check, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 09/23] qcow2: Add QcowCache, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 11/23] qcow2: Batch flushes for COW, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 10/23] qcow2: Use QcowCache, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 12/23] ide: Remove unneeded null pointer check, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 13/23] Documentation: Add qemu-img check/rebase, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 14/23] qed: Refuse to create images on block devices, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 15/23] Fix block migration when the device size is not a multiple of 1 MB, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 16/23] blockdev: Fix error message for invalid -drive CHS, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 17/23] blockdev: Make drive_init() use error_report(), Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 18/23] blockdev: Fix drive_del not to crash when drive is not in use,
Kevin Wolf <=
- [Qemu-devel] [PATCH 19/23] block: Use backing format driver during image creation, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 22/23] usb-msd: Propagate removable bit to SCSI device, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 20/23] scsi-disk: Allow overriding SCSI INQUIRY removable bit, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 23/23] docs: Document scsi-disk and usb-storage removable parameter, Kevin Wolf, 2011/01/24
- [Qemu-devel] [PATCH 21/23] scsi: Allow scsi_bus_legacy_add_drive() to set removable bit, Kevin Wolf, 2011/01/24
- [Qemu-devel] Re: [PULL 00/23] Block patches, Anthony Liguori, 2011/01/24