From b4788f6d55548e587ced330ece711456f40ec8f1 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 12 Dec 2005 00:37:13 -0800 Subject: [PATCH] cciss: double put_disk() This undoes the put_disk patch I sent in before. If I had been paying attention I would have seen that we call put_disk from free_hba during driver unload. That's the only time we want to call it. If it's called from deregister disk we may remove the controller (cNd0) unintentionally. Signed-off-by: Mike Miller Signed-off-by: Jens Axboe Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/block/cciss.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'drivers/block/cciss.c') diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index a9e33db46e68..e34104d32637 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -1146,7 +1146,6 @@ static int revalidate_allvol(ctlr_info_t *host) del_gendisk(disk); if (q) blk_cleanup_queue(q); - put_disk(disk); } } @@ -1467,7 +1466,6 @@ static int deregister_disk(struct gendisk *disk, drive_info_struct *drv, del_gendisk(disk); if (q) blk_cleanup_queue(q); - put_disk(disk); } } @@ -3243,7 +3241,6 @@ static void __devexit cciss_remove_one (struct pci_dev *pdev) del_gendisk(disk); if (q) blk_cleanup_queue(q); - put_disk(disk); } } -- cgit v1.2.1 From 2f6331faf58a4727a9f1138cd6db30d05b124220 Mon Sep 17 00:00:00 2001 From: Mike Miller Date: Mon, 12 Dec 2005 22:17:14 -0800 Subject: [PATCH] cciss: fix for deregister_disk This patch adds setting our drv->queue = NULL back in deregister_disk. The drv->queue is part of our controller struct. blk_cleanup_queue works only on the queue in the gendisk struct. Signed-off-by: Mike Miller Cc: Jens Axboe Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/block/cciss.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'drivers/block/cciss.c') diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index e34104d32637..c3441b3f086e 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -1464,8 +1464,10 @@ static int deregister_disk(struct gendisk *disk, drive_info_struct *drv, request_queue_t *q = disk->queue; if (disk->flags & GENHD_FL_UP) del_gendisk(disk); - if (q) + if (q) { blk_cleanup_queue(q); + drv->queue = NULL; + } } } -- cgit v1.2.1