Skip to content

Commit 13384f6

Browse files
truhuantorvalds
authored andcommitted
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 Link: https://lkml.kernel.org/r/20201228080018.23041-1-walter-zh.wu@mediatek.com Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> Suggested-by: Dmitry Vyukov <dvyukov@google.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Andrey Konovalov <andreyknvl@google.com> Cc: Alexander Potapenko <glider@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 111fe71 commit 13384f6

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

mm/kasan/generic.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,8 @@ void kasan_record_aux_stack(void *addr)
337337
cache = page->slab_cache;
338338
object = nearest_obj(cache, page, addr);
339339
alloc_meta = kasan_get_alloc_meta(cache, object);
340+
if (!alloc_meta)
341+
return;
340342

341343
alloc_meta->aux_stack[1] = alloc_meta->aux_stack[0];
342344
alloc_meta->aux_stack[0] = kasan_save_stack(GFP_NOWAIT);

0 commit comments

Comments
 (0)