• Yang Shi's avatar
    Revert "kmemleak: allow to coexist with fault injection" · 01d8d08f
    Yang Shi authored
    [ Upstream commit df9576de ]
    
    When running ltp's oom test with kmemleak enabled, the below warning was
    triggerred since kernel detects __GFP_NOFAIL & ~__GFP_DIRECT_RECLAIM is
    passed in:
    
      WARNING: CPU: 105 PID: 2138 at mm/page_alloc.c:4608 __alloc_pages_nodemask+0x1c31/0x1d50
      Modules linked in: loop dax_pmem dax_pmem_core ip_tables x_tables xfs virtio_net net_failover virtio_blk failover ata_generic virtio_pci virtio_ring virtio libata
      CPU: 105 PID: 2138 Comm: oom01 Not tainted 5.2.0-next-20190710+ #7
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.2-0-g5f4c7b1-prebuilt.qemu-project.org 04/01/2014
      RIP: 0010:__alloc_pages_nodemask+0x1c31/0x1d50
      ...
       kmemleak_alloc+0x4e/0xb0
       kmem_cache_alloc+0x2a7/0x3e0
       mempool_alloc_slab+0x2d/0x40
       mempool_alloc+0x118/0x2b0
       bio_alloc_bioset+0x19d/0x350
       get_swap_bio+0x80/0x230
       __swap_writepage+0x5ff/0xb20
    
    The mempool_alloc_slab() clears __GFP_DIRECT_RECLAIM, however kmemleak
    has __GFP_NOFAIL set all the time due to d9570ee3 ("kmemleak:
    allow to coexist with fault injection").  But, it doesn't make any sense
    to have __GFP_NOFAIL and ~__GFP_DIRECT_RECLAIM specified at the same
    time.
    
    According to the discussion on the mailing list, the commit should be
    reverted for short term solution.  Catalin Marinas would follow up with
    a better solution for longer term.
    
    The failure rate of kmemleak metadata allocation may increase in some
    circumstances, but this should be expected side effect.
    
    Link: http://lkml.kernel.org/r/1563299431-111710-1-git-send-email-yang.shi@linux.alibaba.com
    Fixes: d9570ee3 ("kmemleak: allow to coexist with fault injection")
    Signed-off-by: default avatarYang Shi <yang.shi@linux.alibaba.com>
    Suggested-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Qian Cai <cai@lca.pw>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    01d8d08f
kmemleak.c 59.4 KB