diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2008-04-24 14:49:53 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2008-05-02 07:50:46 -0400 |
commit | 2e895e4c23b7f73dba7238db5c5c2dcffb2a4d9d (patch) | |
tree | 1893fa2ae97e60e0d28f6c467d48006c14f88781 /drivers | |
parent | 0527168522c25121bdd5d5f1d3c5b484d972ea14 (diff) |
virtio-blk: fix remove oops
Do not unregister the major at device remove, since there might be
another device instances around.
(qemu) pci_del 0 11
(qemu) ACPI: PCI interrupt for device 0000:00:0b.0 disabled
(qemu) pci_del 0 10
(qemu) ------------[ cut here ]------------
WARNING: at block/genhd.c:126 unregister_blkdev+0x74/0x9e()
ACPI: PCI interrupt for device 0000:00:0a.0 disabled
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/block/virtio_blk.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index fb283af38023..7e83b6c6e3d6 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
@@ -289,7 +289,6 @@ out: | |||
289 | static void virtblk_remove(struct virtio_device *vdev) | 289 | static void virtblk_remove(struct virtio_device *vdev) |
290 | { | 290 | { |
291 | struct virtio_blk *vblk = vdev->priv; | 291 | struct virtio_blk *vblk = vdev->priv; |
292 | int major = vblk->disk->major; | ||
293 | 292 | ||
294 | /* Nothing should be pending. */ | 293 | /* Nothing should be pending. */ |
295 | BUG_ON(!list_empty(&vblk->reqs)); | 294 | BUG_ON(!list_empty(&vblk->reqs)); |
@@ -299,7 +298,6 @@ static void virtblk_remove(struct virtio_device *vdev) | |||
299 | 298 | ||
300 | blk_cleanup_queue(vblk->disk->queue); | 299 | blk_cleanup_queue(vblk->disk->queue); |
301 | put_disk(vblk->disk); | 300 | put_disk(vblk->disk); |
302 | unregister_blkdev(major, "virtblk"); | ||
303 | mempool_destroy(vblk->pool); | 301 | mempool_destroy(vblk->pool); |
304 | vdev->config->del_vq(vblk->vq); | 302 | vdev->config->del_vq(vblk->vq); |
305 | kfree(vblk); | 303 | kfree(vblk); |