• Q
    page_poison: play nicely with KASAN · 15129a33
    Qian Cai 提交于
    mainline inclusion
    from mainline-5.0
    commit 4117992df66a
    category: bugfix
    bugzilla: 11620
    CVE: NA
    
    ------------------------------------------------
    
    KASAN does not play well with the page poisoning (CONFIG_PAGE_POISONING).
    It triggers false positives in the allocation path,
    
    BUG: KASAN: use-after-free in memchr_inv+0x2ea/0x330
    Read of size 8 at addr ffff88881f800000 by task swapper/0
    CPU: 0 PID: 0 Comm: swapper Not tainted 5.0.0-rc1+ #54
    Call Trace:
     dump_stack+0xe0/0x19a
     print_address_description.cold.2+0x9/0x28b
     kasan_report.cold.3+0x7a/0xb5
     __asan_report_load8_noabort+0x19/0x20
     memchr_inv+0x2ea/0x330
     kernel_poison_pages+0x103/0x3d5
     get_page_from_freelist+0x15e7/0x4d90
    
    because KASAN has not yet unpoisoned the shadow page for allocation before
    it checks memchr_inv() but only found a stale poison pattern.
    
    Also, false positives in free path,
    
    BUG: KASAN: slab-out-of-bounds in kernel_poison_pages+0x29e/0x3d5
    Write of size 4096 at addr ffff8888112cc000 by task swapper/0/1
    CPU: 5 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc1+ #55
    Call Trace:
     dump_stack+0xe0/0x19a
     print_address_description.cold.2+0x9/0x28b
     kasan_report.cold.3+0x7a/0xb5
     check_memory_region+0x22d/0x250
     memset+0x28/0x40
     kernel_poison_pages+0x29e/0x3d5
     __free_pages_ok+0x75f/0x13e0
    
    due to KASAN adds poisoned redzones around slab objects, but the page
    poisoning needs to poison the whole page.
    
    Link: http://lkml.kernel.org/r/20190114233405.67843-1-cai@lca.pwSigned-off-by: NQian Cai <cai@lca.pw>
    Acked-by: NAndrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Nzhong jiang <zhongjiang@huawei.com>
    Reviewed-by: NJing Xiangfeng <jingxiangfeng@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    15129a33
page_poison.c 2.8 KB