Description of problem: No sure how real this issue is - but with lvm2 test suite run we kmemleak couple of this elements per each run. unreferenced object 0xffff8bbcbad71f00 (size 256): comm "kworker/u4:2", pid 5875, jiffies 4298404175 (age 413.812s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffff8b9471ca>] kmemleak_alloc+0x4a/0xa0 [<ffffffff8b28be2e>] kmem_cache_alloc+0x14e/0x2e0 [<ffffffff8b21529d>] mempool_alloc_slab+0x1d/0x30 [<ffffffff8b215019>] mempool_alloc+0x79/0x1e0 [<ffffffff8b4572e7>] bio_alloc_bioset+0xa7/0x270 [<ffffffffc02ec48a>] process_prepared_discard_passdown_pt1+0x7a/0x180 [dm_thin_pool] [<ffffffffc02eb38c>] process_discard_cell_passdown+0x15c/0x1e0 [dm_thin_pool] [<ffffffffc02e9821>] process_discard_bio+0xc1/0xf0 [dm_thin_pool] [<ffffffffc02ee7a1>] do_worker+0x781/0x900 [dm_thin_pool] [<ffffffff8b0d4d80>] process_one_work+0x260/0x750 [<ffffffff8b0d52be>] worker_thread+0x4e/0x4a0 [<ffffffff8b0dcacc>] kthread+0x12c/0x150 [<ffffffff8b956fc1>] ret_from_fork+0x31/0x40 [<ffffffffffffffff>] 0xffffffffffffffff Version-Release number of selected component (if applicable): Kernel 4.10-rc6 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
Patch suggested with: https://www.redhat.com/archives/dm-devel/2017-April/msg00286.html (with full headers) -- drivers/md/dm-thin.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 2b266a2..5742e5e 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -1069,6 +1069,7 @@ static void passdown_endio(struct bio *bio) * to unmap (we ignore err). */ queue_passdown_pt2(bio->bi_private); + bio_put(bio); }
Was fixed long ago with this upstream commit: commit 948f581a53b704b984aa20df009f0a2b4cf7f907 Author: Dennis Yang <dennisyang> Date: Tue Apr 18 15:27:06 2017 +0800 dm thin: fix a memory leak when passing discard bio down dm-thin does not free the discard_parent bio after all chained sub bios finished. The following kmemleak report could be observed after pool with discard_passdown option processes discard bios in linux v4.11-rc7. To fix this, we drop the discard_parent bio reference when its endio (passdown_endio) called. unreferenced object 0xffff8803d6b29700 (size 256): comm "kworker/u8:0", pid 30349, jiffies 4379504020 (age 143002.776s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01 00 00 00 00 00 00 f0 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffff81a5efd9>] kmemleak_alloc+0x49/0xa0 [<ffffffff8114ec34>] kmem_cache_alloc+0xb4/0x100 [<ffffffff8110eec0>] mempool_alloc_slab+0x10/0x20 [<ffffffff8110efa5>] mempool_alloc+0x55/0x150 [<ffffffff81374939>] bio_alloc_bioset+0xb9/0x260 [<ffffffffa018fd20>] process_prepared_discard_passdown_pt1+0x40/0x1c0 [dm_thin_pool] [<ffffffffa018b409>] break_up_discard_bio+0x1a9/0x200 [dm_thin_pool] [<ffffffffa018b484>] process_discard_cell_passdown+0x24/0x40 [dm_thin_pool] [<ffffffffa018b24d>] process_discard_bio+0xdd/0xf0 [dm_thin_pool] [<ffffffffa018ecf6>] do_worker+0xa76/0xd50 [dm_thin_pool] [<ffffffff81086239>] process_one_work+0x139/0x370 [<ffffffff810867b1>] worker_thread+0x61/0x450 [<ffffffff8108b316>] kthread+0xd6/0xf0 [<ffffffff81a6cd1f>] ret_from_fork+0x3f/0x70 [<ffffffffffffffff>] 0xffffffffffffffff Cc: stable.org Signed-off-by: Dennis Yang <dennisyang> Signed-off-by: Mike Snitzer <snitzer>