Skip to contentSkip to conversation

memory leaks from xfs_rw_bdev()

DISCUSSION Qian Cai 2 participants 3 messages Jul 8, 2019 – Jul 9, 2019 XFS filesystem

lore
Share & tools
lore

Qian Cai

author
#0 lore raw

Booting today's linux-next starts to have several memory leaks. Looks like the new xfs_rw_bdev() was introduced in the commit "xfs: use bios directly to read and write the log recovery buffers".

https://patchwork.kernel.org/patch/10977673/

unreferenced object 0xffff888f595487c0 (size 184):
  comm "mount", pid 1473, jiffies 4294946340 (age 14914.220s) hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 08 40 28 67 8f 88 ff ff  .........@(g.... 00 18 00 00 40 c6 00 00 00 00 00 00 00 00 00 00  ....@........... backtrace:

    [<0000000031fb6250>] kmem_cache_alloc+0x272/0x400
    [<000000008ce62f00>] mempool_alloc_slab+0x2d/0x40
    [<000000004eaa8110>] mempool_alloc+0x10a/0x29e
    [<00000000906127bf>] bio_alloc_bioset+0x150/0x330
    [<000000005d5cc981>] xfs_rw_bdev+0x72/0x300 [xfs]
    [<00000000bbf739cd>] xlog_do_io+0xd8/0x1a0 [xfs]
    [<000000003815ee16>] xlog_bread+0x28/0x70 [xfs]
    [<00000000883dc328>] xlog_find_verify_cycle+0x180/0x2c0 [xfs]
    [<00000000457d45f8>] xlog_find_head+0x27c/0x5a0 [xfs]
    [<000000009956dd1f>] xlog_find_tail+0xdb/0x530 [xfs]
    [<00000000c0cdfde4>] xlog_recover+0x8f/0x2a0 [xfs]
    [<00000000f87803cd>] xfs_log_mount+0x247/0x3b0 [xfs]
    [<00000000e3a05975>] xfs_mountfs+0x7bd/0xe30 [xfs]
    [<00000000128f1a43>] xfs_fs_fill_super+0x6f0/0xaa0 [xfs]
    [<000000000ead1e3b>] mount_bdev+0x1d9/0x220
    [<00000000d48a9588>] xfs_fs_mount+0x15/0x20 [xfs]
#1 lore raw

We actually have a discussion on that in another thread, but if you can easily reproduce the issue, can you test the patch below?

fs/xfs/xfs_bio_io.c +1 -1
index 757c1d9293eb..e2148f2d5d6b 100644
@@ -43,7 +43,7 @@ xfs_rw_bdev(
 			bio_copy_dev(bio, prev);
 			bio->bi_iter.bi_sector = bio_end_sector(prev);
 			bio->bi_opf = prev->bi_opf;
-			bio_chain(bio, prev);
+			bio_chain(prev, bio);
 
 			submit_bio(prev);
 		}
author
#2 lore raw
Quoted 13 lines · Christoph Hellwig

We actually have a discussion on that in another thread, but if you can easily reproduce the issue, can you test the patch below?

fs/xfs/xfs_bio_io.c +1 -1
index 757c1d9293eb..e2148f2d5d6b 100644
@@ -43,7 +43,7 @@ xfs_rw_bdev(
  			bio_copy_dev(bio, prev);
  			bio->bi_iter.bi_sector = bio_end_sector(prev);
  			bio->bi_opf = prev->bi_opf;
-			bio_chain(bio, prev);
+			bio_chain(prev, bio);
Quoted 3 lines


  submit_bio(prev);
  }

Yes, it works fine.