@@ -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);
put_disk(dev->disk);
list_del(&dev->list);
kfree(dev);
@@ -423,7 +424,6 @@ int del_mtd_blktrans_dev(struct mtd_blktrans_dev *old)
old->rq->queuedata = NULL;
blk_start_queue(old->rq);
spin_unlock_irqrestore(&old->queue_lock, flags);
- blk_cleanup_queue(old->rq);
/* Ask trans driver for release to the mtd device */
mutex_lock(&old->lock);
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 <maximlevitsky@gmail.com> --- 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...)