FAILED: patch "[PATCH] dm mpath: fix leak of dm_mpath_io structure in blk-mq" failed to apply to 4.0-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.0-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
4c6dd53dd3674c310d7379c6b3273daa9fd95c79Mon Sep 17 00:00:00 2001
From: Mike Snitzer <[email protected]>
Date: Wed, 27 May 2015 15:23:56 -0400
Subject: [PATCH] dm mpath: fix leak of dm_mpath_io structure in blk-mq
.queue_rq error path
Otherwise kmemleak reported:
unreferenced object 0xffff88009b14e2b0 (size 16):
comm "fio", pid 4274, jiffies 4294978034 (age 1253.210s) hex dump (first 16 bytes):
40 12 f3 99 01 88 ff ff 00 10 00 00 00 00 00 00 @...............
backtrace:
[<ffffffff81600029>] kmemleak_alloc+0x49/0xb0
[<ffffffff811679a8>] kmem_cache_alloc+0xf8/0x160
[<ffffffff8111c950>] mempool_alloc_slab+0x10/0x20
[<ffffffff8111cb37>] mempool_alloc+0x57/0x150
[<ffffffffa04d2b61>] __multipath_map.isra.17+0xe1/0x220 [dm_multipath]
[<ffffffffa04d2cb5>] multipath_clone_and_map+0x15/0x20 [dm_multipath]
[<ffffffffa02889b5>] map_request.isra.39+0xd5/0x220 [dm_mod]
[<ffffffffa028b0e4>] dm_mq_queue_rq+0x134/0x240 [dm_mod]
[<ffffffff812cccb5>] __blk_mq_run_hw_queue+0x1d5/0x380
[<ffffffff812ccaa5>] blk_mq_run_hw_queue+0xc5/0x100
[<ffffffff812ce350>] blk_sq_make_request+0x240/0x300
[<ffffffff812c0f30>] generic_make_request+0xc0/0x110
[<ffffffff812c0ff2>] submit_bio+0x72/0x150
[<ffffffff811c07cb>] do_blockdev_direct_IO+0x1f3b/0x2da0
[<ffffffff811c166e>] __blockdev_direct_IO+0x3e/0x40
[<ffffffff8120aa1a>] ext4_direct_IO+0x1aa/0x390Fixes e5863d9ad ("dm: allocate requests in target when stacking on blk-mq devices")
Reported-by Bart Van Assche <[email protected]>
Signed-off-by Mike Snitzer <[email protected]>
Cc [email protected] # 4.0+
drivers/md/dm-mpath.c +3 -1
@@ -429,9 +429,11 @@ static int __multipath_map(struct dm_target *ti, struct request *clone,/* blk-mq request-based interface */ *__clone =blk_get_request (bdev_get_queue (bdev),rq_data_dir (rq),GFP_ATOMIC ); -if (IS_ERR (*__clone)) +if (IS_ERR (*__clone)) {/* ENOMEM, requeue */ +clear_mapinfo (m, map_context);return r; + } (*__clone)->bio = (*__clone)->biotail =NULL ; (*__clone)->rq_disk = bdev->bd_disk; (*__clone)->cmd_flags |=REQ_FAILFAST_TRANSPORT ;