From: Robert Elliott Date: Tue, 2 Sep 2014 16:38:44 +0000 (-0500) Subject: blk-mq: cleanup after blk_mq_init_rq_map failures X-Git-Tag: fixes-for-v3.18-merge-window~132^2~3 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5676e7b6db02b80eafc2e3ad316d5f2fee817ecb;p=pandora-kernel.git blk-mq: cleanup after blk_mq_init_rq_map failures In blk-mq.c blk_mq_alloc_tag_set, if: set->tags = kmalloc_node() succeeds, but one of the blk_mq_init_rq_map() calls fails, goto out_unwind; needs to free set->tags so the caller is not obligated to do so. None of the current callers (null_blk, virtio_blk, virtio_blk, or the forthcoming scsi-mq) do so. set->tags needs to be set to NULL after doing so, so other tag cleanup logic doesn't try to free a stale pointer later. Also set it to NULL in blk_mq_free_tag_set. Tested with error injection on the forthcoming scsi-mq + hpsa combination. Signed-off-by: Robert Elliott Signed-off-by: Jens Axboe --- Reading git-diff-tree failed