MTD: blktrans: do blk_cleanup_queue when it is really safe to do so

Message ID
State Accepted
Commit e4d64cab99a2d659bf9d6fe9ab67666bceb68d87
Headers show

Commit Message

Maxim Levitsky Feb. 27, 2010, 12:31 a.m.
I was calling it in del_mtd_blktrans_dev, but ->request_fn could
still be running at that point, thus defer this call
to blktrans_dev_release

Signed-off-by: Maxim Levitsky <>
 drivers/mtd/mtd_blkdevs.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

This fixes the problem I described in former patch
(no matter how well sotware is tested, there must be bugs...)


diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index e32c49c..03e19c1 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -32,6 +32,7 @@  void blktrans_dev_release(struct kref *kref)
 		container_of(kref, struct mtd_blktrans_dev, ref);
 	dev->disk->private_data = NULL;
+	blk_cleanup_queue(dev->rq);
@@ -423,7 +424,6 @@  int del_mtd_blktrans_dev(struct mtd_blktrans_dev *old)
 	old->rq->queuedata = NULL;
 	spin_unlock_irqrestore(&old->queue_lock, flags);
-	blk_cleanup_queue(old->rq);
 	/* Ask trans driver for release to the mtd device */