[syzbot] [mm?] KASAN: slab-use-after-free Read in __mm_populate

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

syzbot found the following issue on:

HEAD commit:    a5618886fdab Merge remote-tracking branch 'will/for-next/p..
git tree:       git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci
console output: https://syzkaller.appspot.com/x/log.txt?x=15f8c474580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=29061e148cfaa3d3
dashboard link: https://syzkaller.appspot.com/bug?extid=856397091bcfa77c8175
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
userspace arch: arm64

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/8b90307e7f61/disk-a5618886.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/8b5ea0300ee3/vmlinux-a5618886.xz
kernel image: https://storage.googleapis.com/syzbot-assets/47f59a45fc8c/Image-a5618886.gz.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+856397091bcfa77c8175@xxxxxxxxxxxxxxxxxxxxxxxxx

==================================================================
BUG: KASAN: slab-use-after-free in __mm_populate+0x14c/0x3d8 mm/gup.c:2013
Read of size 8 at addr ffff0000fa4da6d0 by task syz.7.313/8381

CPU: 0 UID: 0 PID: 8381 Comm: syz.7.313 Not tainted 6.14.0-rc6-syzkaller-ga5618886fdab #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
Call trace:
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:466 (C)
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0xe4/0x150 lib/dump_stack.c:120
 print_address_description mm/kasan/report.c:408 [inline]
 print_report+0x198/0x550 mm/kasan/report.c:521
 kasan_report+0xd8/0x138 mm/kasan/report.c:634
 __asan_report_load8_noabort+0x20/0x2c mm/kasan/report_generic.c:381
 __mm_populate+0x14c/0x3d8 mm/gup.c:2013
 mm_populate include/linux/mm.h:3386 [inline]
 vm_mmap_pgoff+0x304/0x3c4 mm/util.c:580
 ksys_mmap_pgoff+0x3a4/0x5c8 mm/mmap.c:607
 __do_sys_mmap arch/arm64/kernel/sys.c:28 [inline]
 __se_sys_mmap arch/arm64/kernel/sys.c:21 [inline]
 __arm64_sys_mmap+0xf8/0x110 arch/arm64/kernel/sys.c:21
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:744
 el0t_64_sync_handler+0x84/0x108 arch/arm64/kernel/entry-common.c:762
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600

Allocated by task 8381:
 kasan_save_stack mm/kasan/common.c:47 [inline]
 kasan_save_track+0x40/0x78 mm/kasan/common.c:68
 kasan_save_alloc_info+0x40/0x50 mm/kasan/generic.c:562
 unpoison_slab_object mm/kasan/common.c:319 [inline]
 __kasan_slab_alloc+0x74/0x8c mm/kasan/common.c:345
 kasan_slab_alloc include/linux/kasan.h:250 [inline]
 slab_post_alloc_hook mm/slub.c:4115 [inline]
 slab_alloc_node mm/slub.c:4164 [inline]
 kmem_cache_alloc_noprof+0x254/0x410 mm/slub.c:4171
 vm_area_alloc+0x30/0x1bc kernel/fork.c:472
 __mmap_new_vma mm/vma.c:2345 [inline]
 __mmap_region mm/vma.c:2461 [inline]
 mmap_region+0x13ec/0x2518 mm/vma.c:2539
 do_mmap+0xbc8/0x1150 mm/mmap.c:561
 vm_mmap_pgoff+0x228/0x3c4 mm/util.c:575
 ksys_mmap_pgoff+0x3a4/0x5c8 mm/mmap.c:607
 __do_sys_mmap arch/arm64/kernel/sys.c:28 [inline]
 __se_sys_mmap arch/arm64/kernel/sys.c:21 [inline]
 __arm64_sys_mmap+0xf8/0x110 arch/arm64/kernel/sys.c:21
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:744
 el0t_64_sync_handler+0x84/0x108 arch/arm64/kernel/entry-common.c:762
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600

Freed by task 8500:
 kasan_save_stack mm/kasan/common.c:47 [inline]
 kasan_save_track+0x40/0x78 mm/kasan/common.c:68
 kasan_save_free_info+0x54/0x6c mm/kasan/generic.c:576
 poison_slab_object mm/kasan/common.c:247 [inline]
 __kasan_slab_free+0x64/0x8c mm/kasan/common.c:264
 kasan_slab_free include/linux/kasan.h:233 [inline]
 slab_free_hook mm/slub.c:2353 [inline]
 slab_free mm/slub.c:4609 [inline]
 kmem_cache_free+0x198/0x554 mm/slub.c:4711
 __vm_area_free+0xfc/0x148 kernel/fork.c:515
 vm_area_free_rcu_cb+0x80/0xa4 kernel/fork.c:526
 rcu_do_batch kernel/rcu/tree.c:2546 [inline]
 rcu_core+0x898/0x1b5c kernel/rcu/tree.c:2802
 rcu_core_si+0x10/0x1c kernel/rcu/tree.c:2819
 handle_softirqs+0x320/0xd34 kernel/softirq.c:561
 __do_softirq+0x14/0x20 kernel/softirq.c:595

Last potentially related work creation:
 kasan_save_stack+0x40/0x6c mm/kasan/common.c:47
 kasan_record_aux_stack+0xb4/0xcc mm/kasan/generic.c:548
 __call_rcu_common kernel/rcu/tree.c:3065 [inline]
 call_rcu+0x104/0xb9c kernel/rcu/tree.c:3172
 vm_area_free+0x28/0x38 kernel/fork.c:533
 remove_vma mm/vma.c:419 [inline]
 vms_complete_munmap_vmas+0x5ac/0x808 mm/vma.c:1202
 vms_abort_munmap_vmas mm/vma.c:2215 [inline]
 __mmap_region mm/vma.c:2486 [inline]
 mmap_region+0xba4/0x2518 mm/vma.c:2539
 do_mmap+0xbc8/0x1150 mm/mmap.c:561
 vm_mmap_pgoff+0x228/0x3c4 mm/util.c:575
 ksys_mmap_pgoff+0x3a4/0x5c8 mm/mmap.c:607
 __do_sys_mmap arch/arm64/kernel/sys.c:28 [inline]
 __se_sys_mmap arch/arm64/kernel/sys.c:21 [inline]
 __arm64_sys_mmap+0xf8/0x110 arch/arm64/kernel/sys.c:21
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:744
 el0t_64_sync_handler+0x84/0x108 arch/arm64/kernel/entry-common.c:762
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600

The buggy address belongs to the object at ffff0000fa4da6c8
 which belongs to the cache vm_area_struct of size 184
The buggy address is located 8 bytes inside of
 freed 184-byte region [ffff0000fa4da6c8, ffff0000fa4da780)

The buggy address belongs to the physical page:
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x13a4da
memcg:ffff0000cee77f01
flags: 0x5ffc00000000000(node=0|zone=2|lastcpupid=0x7ff)
page_type: f5(slab)
raw: 05ffc00000000000 ffff0000c1877b40 fffffdffc3569380 dead000000000004
raw: 0000000000000000 0000000000100010 00000000f5000000 ffff0000cee77f01
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff0000fa4da580: 00 00 fc fc fc fc fc fc fc fc 00 00 00 00 00 00
 ffff0000fa4da600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff0000fa4da680: 00 fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb
                                                 ^
 ffff0000fa4da700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff0000fa4da780: fc fc fc fc fc fc fc fc 00 00 00 00 00 00 00 00
==================================================================
------------[ cut here ]------------
kernel BUG at mm/gup.c:1891!
Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
Modules linked in:
CPU: 0 UID: 0 PID: 8381 Comm: syz.7.313 Tainted: G    B              6.14.0-rc6-syzkaller-ga5618886fdab #0
Tainted: [B]=BAD_PAGE
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : populate_vma_page_range+0x2c4/0x2f0 mm/gup.c:1891
lr : populate_vma_page_range+0x2c4/0x2f0 mm/gup.c:1891
sp : ffff80009d7e7a20
x29: ffff80009d7e7a80 x28: dfff800000000000 x27: ffff80009d7e7a20
x26: 1ffff00013afcf44 x25: dfff800000000000 x24: 0000000000000118
x23: 0000400000600000 x22: ffff0000fa4da6c8 x21: ffff0000d5372200
x20: ffff80009d7e7b20 x19: ffff0000f235f118 x18: 1fffe000366f1886
x17: ffff80008fbbd000 x16: ffff80008b7d1688 x15: 0000000000000001
x14: 1ffff0001262e8f8 x13: 0000000000000000 x12: 0000000000000000
x11: 0000000000080000 x10: 0000000000030d1d x9 : ffff8000a4ddd000
x8 : 0000000000030d1e x7 : 1fffe000366f1887 x6 : ffff8000803d5958
x5 : 0000000000000000 x4 : 0000000000000001 x3 : ffff800080a62780
x2 : 0000000000000000 x1 : 0000000000000118 x0 : 0000000000000000
Call trace:
 populate_vma_page_range+0x2c4/0x2f0 mm/gup.c:1891 (P)
 __mm_populate+0x240/0x3d8 mm/gup.c:2032
 mm_populate include/linux/mm.h:3386 [inline]
 vm_mmap_pgoff+0x304/0x3c4 mm/util.c:580
 ksys_mmap_pgoff+0x3a4/0x5c8 mm/mmap.c:607
 __do_sys_mmap arch/arm64/kernel/sys.c:28 [inline]
 __se_sys_mmap arch/arm64/kernel/sys.c:21 [inline]
 __arm64_sys_mmap+0xf8/0x110 arch/arm64/kernel/sys.c:21
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:744
 el0t_64_sync_handler+0x84/0x108 arch/arm64/kernel/entry-common.c:762
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
Code: 9406604b 17ffffa3 95d32b09 97f0fdc7 (d4210000) 
---[ end trace 0000000000000000 ]---


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux