diff --git a/[refs] b/[refs] index d6604fef7737..ab0385408e14 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 334c2b0b8b2ab186fa198413386cba41fffcb4f2 +refs/heads/master: 6dd9ad7df2019b1e33a372a501907db293ebcd0d diff --git a/trunk/block/blk-core.c b/trunk/block/blk-core.c index f65871116404..f43c8a5840ae 100644 --- a/trunk/block/blk-core.c +++ b/trunk/block/blk-core.c @@ -407,8 +407,13 @@ void blk_cleanup_queue(struct request_queue *q) spin_unlock_irq(lock); mutex_unlock(&q->sysfs_lock); - /* drain all requests queued before DEAD marking */ - blk_drain_queue(q, true); + /* + * Drain all requests queued before DEAD marking. The caller might + * be trying to tear down @q before its elevator is initialized, in + * which case we don't want to call into draining. + */ + if (q->elevator) + blk_drain_queue(q, true); /* @q won't process any more request, flush async actions */ del_timer_sync(&q->backing_dev_info.laptop_mode_wb_timer);