lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 28 Dec 2020 16:00:18 +0800 From: Walter Wu <walter-zh.wu@...iatek.com> To: Andrey Ryabinin <aryabinin@...tuozzo.com>, Alexander Potapenko <glider@...gle.com>, Dmitry Vyukov <dvyukov@...gle.com>, Andrey Konovalov <andreyknvl@...gle.com>, Andrew Morton <akpm@...ux-foundation.org> CC: <kasan-dev@...glegroups.com>, <linux-mm@...ck.org>, <linux-kernel@...r.kernel.org>, <linux-arm-kernel@...ts.infradead.org>, wsd_upstream <wsd_upstream@...iatek.com>, <linux-mediatek@...ts.infradead.org>, Walter Wu <walter-zh.wu@...iatek.com> Subject: [PATCH] kasan: fix null pointer dereference in kasan_record_aux_stack Syzbot reported the following [1]: BUG: kernel NULL pointer dereference, address: 0000000000000008 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 2d993067 P4D 2d993067 PUD 19a3c067 PMD 0 Oops: 0000 [#1] PREEMPT SMP KASAN CPU: 1 PID: 3852 Comm: kworker/1:2 Not tainted 5.10.0-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: events free_ipc RIP: 0010:kasan_record_aux_stack+0x77/0xb0 Add null checking slab object from kasan_get_alloc_meta() in order to avoid null pointer dereference. [1] https://syzkaller.appspot.com/x/log.txt?x=10a82a50d00000 Signed-off-by: Walter Wu <walter-zh.wu@...iatek.com> Suggested-by: Dmitry Vyukov <dvyukov@...gle.com> Cc: Andrey Ryabinin <aryabinin@...tuozzo.com> CC: Dmitry Vyukov <dvyukov@...gle.com> CC: Andrey Konovalov <andreyknvl@...gle.com> Cc: Alexander Potapenko <glider@...gle.com> Cc: Andrew Morton <akpm@...ux-foundation.org> --- mm/kasan/generic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c index 1dd5a0f99372..5106b84b07d4 100644 --- a/mm/kasan/generic.c +++ b/mm/kasan/generic.c @@ -337,6 +337,8 @@ void kasan_record_aux_stack(void *addr) cache = page->slab_cache; object = nearest_obj(cache, page, addr); alloc_meta = kasan_get_alloc_meta(cache, object); + if (!alloc_meta) + return; alloc_meta->aux_stack[1] = alloc_meta->aux_stack[0]; alloc_meta->aux_stack[0] = kasan_save_stack(GFP_NOWAIT); -- 2.18.0
Powered by blists - more mailing lists