• Qian Cai's avatar
    mm/z3fold: silence kmemleak false positives of slots · af4798a5
    Qian Cai authored
    Kmemleak reported many leaks while under memory pressue in,
    
        slots = alloc_slots(pool, gfp);
    
    which is referenced by "zhdr" in init_z3fold_page(),
    
        zhdr->slots = slots;
    
    However, "zhdr" could be gone without freeing slots as the later will be
    freed separately when the last "handle" off of "handles" array is freed.
    It will be within "slots" which is always aligned.
    
      unreferenced object 0xc000000fdadc1040 (size 104):
      comm "oom04", pid 140476, jiffies 4295359280 (age 3454.970s)
      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:
        z3fold_zpool_malloc+0x7b0/0xe10
        alloc_slots at mm/z3fold.c:214
        (inlined by) init_z3fold_page at mm/z3fold.c:412
        (inlined by) z3fold_alloc at mm/z3fold.c:1161
        (inlined by) z3fold_zpool_malloc at mm/z3fold.c:1735
        zpool_malloc+0x34/0x50
        zswap_frontswap_store+0x60c/0xda0
        zswap_frontswap_store at mm/zswap.c:1093
        __frontswap_store+0x128/0x330
        swap_writepage+0x58/0x110
        pageout+0x16c/0xa40
        shrink_page_list+0x1ac8/0x25c0
        shrink_inactive_list+0x270/0x730
        shrink_lruvec+0x444/0xf30
        shrink_node+0x2a4/0x9c0
        do_try_to_free_pages+0x158/0x640
        try_to_free_pages+0x1bc/0x5f0
        __alloc_pages_slowpath.constprop.60+0x4dc/0x15a0
        __alloc_pages_nodemask+0x520/0x650
        alloc_pages_vma+0xc0/0x420
        handle_mm_fault+0x1174/0x1bf0
    Signed-off-by: default avatarQian Cai <cai@lca.pw>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarVitaly Wool <vitaly.wool@konsulko.com>
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Link: http://lkml.kernel.org/r/20200522220052.2225-1-cai@lca.pwSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    af4798a5
z3fold.c 46.7 KB