scsi: need to reset unprep_rq_fn in sd_remove
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Sat, 3 Jul 2010 14:07:04 +0000 (08:07 -0600)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 7 Aug 2010 16:24:15 +0000 (18:24 +0200)
This is for block's for-2.6.36.

We need to reset q->unprep_rq_fn in sd_remove. Otherwise we hit kernel
oops if we access to a scsi disk device via sg after removing scsi
disk module.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
drivers/scsi/sd.c

index d9a4314..0994ab6 100644 (file)
@@ -2384,6 +2384,7 @@ static int sd_remove(struct device *dev)
        async_synchronize_full();
        sdkp = dev_get_drvdata(dev);
        blk_queue_prep_rq(sdkp->device->request_queue, scsi_prep_fn);
+       blk_queue_unprep_rq(sdkp->device->request_queue, NULL);
        device_del(&sdkp->dev);
        del_gendisk(sdkp->disk);
        sd_shutdown(dev);