+linux-nvme list for awareness ... -ck On 4/6/24 17:38, Yi Zhang wrote: > Hello > > I found the kmemleak issue after blktests nvme/tcp tests on the latest > linux-block/for-next, please help check it and let me know if you need > any info/testing for it, thanks. it will help others to specify which testcase you are using ... > # dmesg | grep kmemleak > [ 2580.572467] kmemleak: 92 new suspected memory leaks (see > /sys/kernel/debug/kmemleak) > > # cat kmemleak.log > unreferenced object 0xffff8885a1abe740 (size 32): > comm "kworker/40:1H", pid 799, jiffies 4296062986 > hex dump (first 32 bytes): > c2 4a 4a 04 00 ea ff ff 00 00 00 00 00 10 00 00 .JJ............. > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > backtrace (crc 6328eade): > [<ffffffffa7f2657c>] __kmalloc+0x37c/0x480 > [<ffffffffa86a9b1f>] sgl_alloc_order+0x7f/0x360 > [<ffffffffc261f6c5>] lo_read_simple+0x1d5/0x5b0 [loop] > [<ffffffffc26287ef>] 0xffffffffc26287ef > [<ffffffffc262a2c4>] 0xffffffffc262a2c4 > [<ffffffffc262a881>] 0xffffffffc262a881 > [<ffffffffa76adf3c>] process_one_work+0x89c/0x19f0 > [<ffffffffa76b0813>] worker_thread+0x583/0xd20 > [<ffffffffa76ce2a3>] kthread+0x2f3/0x3e0 > [<ffffffffa74a804d>] ret_from_fork+0x2d/0x70 > [<ffffffffa7406e4a>] ret_from_fork_asm+0x1a/0x30 > unreferenced object 0xffff88a8b03647c0 (size 16): > comm "kworker/40:1H", pid 799, jiffies 4296062986 > hex dump (first 16 bytes): > c0 4a 4a 04 00 ea ff ff 00 10 00 00 00 00 00 00 .JJ............. > backtrace (crc 860ce62b): > [<ffffffffa7f2657c>] __kmalloc+0x37c/0x480 > [<ffffffffc261f805>] lo_read_simple+0x315/0x5b0 [loop] > [<ffffffffc26287ef>] 0xffffffffc26287ef > [<ffffffffc262a2c4>] 0xffffffffc262a2c4 > [<ffffffffc262a881>] 0xffffffffc262a881 > [<ffffffffa76adf3c>] process_one_work+0x89c/0x19f0 > [<ffffffffa76b0813>] worker_thread+0x583/0xd20 > [<ffffffffa76ce2a3>] kthread+0x2f3/0x3e0 > [<ffffffffa74a804d>] ret_from_fork+0x2d/0x70 > [<ffffffffa7406e4a>] ret_from_fork_asm+0x1a/0x30 > > (gdb) l *(lo_read_simple+0x1d5) > 0x66c5 is in lo_read_simple (drivers/block/loop.c:284). > 279 struct bio_vec bvec; > 280 struct req_iterator iter; > 281 struct iov_iter i; > 282 ssize_t len; > 283 > 284 rq_for_each_segment(bvec, rq, iter) { > 285 iov_iter_bvec(&i, ITER_DEST, &bvec, 1, bvec.bv_len); > 286 len = vfs_iter_read(lo->lo_backing_file, &i, &pos, 0); > 287 if (len < 0) > 288 return len; > (gdb) l *(lo_read_simple+0x315) > 0x6805 is in lo_read_simple (./include/linux/bio.h:120). > 115 iter->bi_sector += bytes >> 9; > 116 > 117 if (bio_no_advance_iter(bio)) > 118 iter->bi_size -= bytes; > 119 else > 120 bvec_iter_advance_single(bio->bi_io_vec, iter, bytes); > 121 } > 122 > 123 void __bio_advance(struct bio *, unsigned bytes); > 124 > > -ck