From: Mike Christie DM, MD, rd and loop use blk_alloc_queue and blk_queue_make_request to initialize their queue, because they only use the make_request_fn. The attached patch prevents the queue from being registered if only blk_alloc_queue was called. --- drivers/block/ll_rw_blk.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/block/ll_rw_blk.c~nr_requests-oops-fix drivers/block/ll_rw_blk.c --- 25/drivers/block/ll_rw_blk.c~nr_requests-oops-fix 2004-01-07 19:11:09.000000000 -0800 +++ 25-akpm/drivers/block/ll_rw_blk.c 2004-01-07 19:11:09.000000000 -0800 @@ -2903,7 +2903,7 @@ int blk_register_queue(struct gendisk *d request_queue_t *q = disk->queue; - if (!q) + if (!q || !q->request_fn) return -ENXIO; q->kobj.parent = kobject_get(&disk->kobj); @@ -2930,7 +2930,7 @@ void blk_unregister_queue(struct gendisk { request_queue_t *q = disk->queue; - if (q) { + if (q && q->request_fn) { elv_unregister_queue(q); kobject_unregister(&q->kobj); _