X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=block%2Fblk-core.c;h=bfe16d5af9f91a7eec049420e3f5b080476dc503;hb=HEAD;hp=4cd5ffc184427cc808808cdd9cb6acbc86b381d9;hpb=9a15c944f76cffa5581959cefe709c7c4ea26994;p=~andy%2Flinux diff --git a/block/blk-core.c b/block/blk-core.c index 4cd5ffc1844..bfe16d5af9f 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -713,7 +713,7 @@ blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn, return NULL; if (blk_init_rl(&q->root_rl, q, GFP_KERNEL)) - return NULL; + goto fail; q->request_fn = rfn; q->prep_rq_fn = NULL; @@ -737,12 +737,16 @@ blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn, /* init elevator */ if (elevator_init(q, NULL)) { mutex_unlock(&q->sysfs_lock); - return NULL; + goto fail; } mutex_unlock(&q->sysfs_lock); return q; + +fail: + kfree(q->flush_rq); + return NULL; } EXPORT_SYMBOL(blk_init_allocated_queue);