aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/virtio_blk.c
diff options
context:
space:
mode:
authorMarcelo Tosatti <mtosatti@redhat.com>2008-04-24 14:49:53 -0400
committerRusty Russell <rusty@rustcorp.com.au>2008-05-02 07:50:46 -0400
commit2e895e4c23b7f73dba7238db5c5c2dcffb2a4d9d (patch)
tree1893fa2ae97e60e0d28f6c467d48006c14f88781 /drivers/block/virtio_blk.c
parent0527168522c25121bdd5d5f1d3c5b484d972ea14 (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/block/virtio_blk.c')
-rw-r--r--drivers/block/virtio_blk.c2
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:
289static void virtblk_remove(struct virtio_device *vdev) 289static 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);