Skip to content

Commit

Permalink
block: free q->flush_rq in blk_init_allocated_queue error paths
Browse files Browse the repository at this point in the history
Commit 7982e90 ("block: fix q->flush_rq NULL pointer crash on
dm-mpath flush") moved an allocation to blk_init_allocated_queue(), but
neglected to free that allocation on the error paths that follow.

Signed-off-by: Dave Jones <[email protected]>
Acked-by: Mike Snitzer <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Dave Jones authored and torvalds committed Mar 21, 2014
1 parent 11d4616 commit 708f04d
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);

Expand Down

0 comments on commit 708f04d

Please sign in to comment.