• Benjamin Poirier's avatar
    mm/page_alloc.c: allow error injection · af3b8544
    Benjamin Poirier authored
    Model call chain after should_failslab().  Likewise, we can now use a
    kprobe to override the return value of should_fail_alloc_page() and inject
    allocation failures into alloc_page*().
    This will allow injecting allocation failures using the BCC tools even
    without building kernel with CONFIG_FAIL_PAGE_ALLOC and booting it with a
    fail_page_alloc= parameter, which incurs some overhead even when failures
    are not being injected.  On the other hand, this patch adds an
    unconditional call to should_fail_alloc_page() from page allocation
    hotpath.  That overhead should be rather negligible with
    CONFIG_FAIL_PAGE_ALLOC=n when there's no kprobe attached, though.
    [vbabka@suse.cz: changelog addition]
    Link: http://lkml.kernel.org/r/20181214074330.18917-1-bpoirier@suse.comSigned-off-by: default avatarBenjamin Poirier <bpoirier@suse.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Pavel Tatashin <pavel.tatashin@microsoft.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
page_alloc.c 230 KB