[<prev] [next>] [day] [month] [year] [list]
Message-ID: <67bcb4a6.050a0220.bbfd1.008f.GAE@google.com>
Date: Mon, 24 Feb 2025 10:04:22 -0800
From: syzbot <syzbot+356aed408415a56543cd@...kaller.appspotmail.com>
To: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
syzkaller-bugs@...glegroups.com
Subject: [syzbot] [hfs?] KASAN: slab-out-of-bounds Read in hfsplus_bmap_alloc
Hello,
syzbot found the following issue on:
HEAD commit: a1c24ab82279 Merge branch 'for-next/el2-enable-feat-pmuv3p..
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=177737f8580000
kernel config: https://syzkaller.appspot.com/x/.config?x=f6b108de97771157
dashboard link: https://syzkaller.appspot.com/bug?extid=356aed408415a56543cd
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
userspace arch: arm64
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=106757a4580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=10b646e4580000
Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/9581dbc26f55/disk-a1c24ab8.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/50aec9ab8b8b/vmlinux-a1c24ab8.xz
kernel image: https://storage.googleapis.com/syzbot-assets/3a018984f8f5/Image-a1c24ab8.gz.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/af05206b0a6c/mount_1.gz
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+356aed408415a56543cd@...kaller.appspotmail.com
loop0: detected capacity change from 0 to 1024
==================================================================
BUG: KASAN: slab-out-of-bounds in hfsplus_bmap_alloc+0x150/0x538
Read of size 8 at addr ffff0000c1d289c0 by task syz-executor168/6441
CPU: 1 UID: 0 PID: 6441 Comm: syz-executor168 Not tainted 6.14.0-rc3-syzkaller-ga1c24ab82279 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
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:378 [inline]
print_report+0x198/0x538 mm/kasan/report.c:489
kasan_report+0xd8/0x138 mm/kasan/report.c:602
__asan_report_load8_noabort+0x20/0x2c mm/kasan/report_generic.c:381
hfsplus_bmap_alloc+0x150/0x538
hfs_btree_inc_height+0xf8/0xa60 fs/hfsplus/brec.c:475
hfsplus_brec_insert+0x11c/0xaa0 fs/hfsplus/brec.c:75
__hfsplus_ext_write_extent+0x288/0x4ac fs/hfsplus/extents.c:107
__hfsplus_ext_cache_extent+0x84/0xa84 fs/hfsplus/extents.c:186
hfsplus_ext_read_extent fs/hfsplus/extents.c:218 [inline]
hfsplus_file_extend+0x39c/0x1544 fs/hfsplus/extents.c:462
hfsplus_get_block+0x398/0x1168 fs/hfsplus/extents.c:245
__block_write_begin_int+0x4c4/0x1610 fs/buffer.c:2116
block_write_begin fs/buffer.c:2226 [inline]
cont_write_begin+0x634/0x984 fs/buffer.c:2577
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
cont_expand_zero fs/buffer.c:2504 [inline]
cont_write_begin+0x2b0/0x984 fs/buffer.c:2567
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
generic_perform_write+0x29c/0x868 mm/filemap.c:4189
__generic_file_write_iter+0xfc/0x204 mm/filemap.c:4290
generic_file_write_iter+0x108/0x4b0 mm/filemap.c:4316
__kernel_write_iter+0x340/0x7a0 fs/read_write.c:612
dump_emit_page fs/coredump.c:884 [inline]
dump_user_range+0x378/0x6c8 fs/coredump.c:945
elf_core_dump+0x336c/0x3c38 fs/binfmt_elf.c:2129
do_coredump+0x1d28/0x29a0 fs/coredump.c:758
get_signal+0xf6c/0x1500 kernel/signal.c:3021
do_signal+0x1a4/0x3a04 arch/arm64/kernel/signal.c:1658
do_notify_resume+0x74/0x1f4 arch/arm64/kernel/entry-common.c:148
exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:169 [inline]
exit_to_user_mode arch/arm64/kernel/entry-common.c:178 [inline]
el0_da+0xbc/0x178 arch/arm64/kernel/entry-common.c:605
el0t_64_sync_handler+0xcc/0x108 arch/arm64/kernel/entry-common.c:765
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
Allocated by task 6441:
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
poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
__kasan_kmalloc+0xac/0xc4 mm/kasan/common.c:394
kasan_kmalloc include/linux/kasan.h:260 [inline]
__do_kmalloc_node mm/slub.c:4294 [inline]
__kmalloc_noprof+0x32c/0x54c mm/slub.c:4306
kmalloc_noprof include/linux/slab.h:905 [inline]
kzalloc_noprof include/linux/slab.h:1037 [inline]
__hfs_bnode_create+0xe4/0x6d4 fs/hfsplus/bnode.c:409
hfsplus_bnode_find+0x1f8/0xc04 fs/hfsplus/bnode.c:486
hfsplus_bmap_alloc+0xc8/0x538 fs/hfsplus/btree.c:390
hfs_btree_inc_height+0xf8/0xa60 fs/hfsplus/brec.c:475
hfsplus_brec_insert+0x11c/0xaa0 fs/hfsplus/brec.c:75
__hfsplus_ext_write_extent+0x288/0x4ac fs/hfsplus/extents.c:107
__hfsplus_ext_cache_extent+0x84/0xa84 fs/hfsplus/extents.c:186
hfsplus_ext_read_extent fs/hfsplus/extents.c:218 [inline]
hfsplus_file_extend+0x39c/0x1544 fs/hfsplus/extents.c:462
hfsplus_get_block+0x398/0x1168 fs/hfsplus/extents.c:245
__block_write_begin_int+0x4c4/0x1610 fs/buffer.c:2116
block_write_begin fs/buffer.c:2226 [inline]
cont_write_begin+0x634/0x984 fs/buffer.c:2577
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
cont_expand_zero fs/buffer.c:2504 [inline]
cont_write_begin+0x2b0/0x984 fs/buffer.c:2567
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
generic_perform_write+0x29c/0x868 mm/filemap.c:4189
__generic_file_write_iter+0xfc/0x204 mm/filemap.c:4290
generic_file_write_iter+0x108/0x4b0 mm/filemap.c:4316
__kernel_write_iter+0x340/0x7a0 fs/read_write.c:612
dump_emit_page fs/coredump.c:884 [inline]
dump_user_range+0x378/0x6c8 fs/coredump.c:945
elf_core_dump+0x336c/0x3c38 fs/binfmt_elf.c:2129
do_coredump+0x1d28/0x29a0 fs/coredump.c:758
get_signal+0xf6c/0x1500 kernel/signal.c:3021
do_signal+0x1a4/0x3a04 arch/arm64/kernel/signal.c:1658
do_notify_resume+0x74/0x1f4 arch/arm64/kernel/entry-common.c:148
exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:169 [inline]
exit_to_user_mode arch/arm64/kernel/entry-common.c:178 [inline]
el0_da+0xbc/0x178 arch/arm64/kernel/entry-common.c:605
el0t_64_sync_handler+0xcc/0x108 arch/arm64/kernel/entry-common.c:765
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
The buggy address belongs to the object at ffff0000c1d28900
which belongs to the cache kmalloc-192 of size 192
The buggy address is located 48 bytes to the right of
allocated 144-byte region [ffff0000c1d28900, ffff0000c1d28990)
The buggy address belongs to the physical page:
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x101d28
flags: 0x5ffc00000000000(node=0|zone=2|lastcpupid=0x7ff)
page_type: f5(slab)
raw: 05ffc00000000000 ffff0000c00013c0 dead000000000100 dead000000000122
raw: 0000000000000000 0000000080100010 00000000f5000000 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff0000c1d28880: 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff0000c1d28900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff0000c1d28980: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
^
ffff0000c1d28a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff0000c1d28a80: 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================
------------[ cut here ]------------
WARNING: CPU: 1 PID: 6441 at ./include/linux/mm.h:2250 rcu_read_unlock_sched include/linux/rcupdate.h:964 [inline]
WARNING: CPU: 1 PID: 6441 at ./include/linux/mm.h:2250 pfn_valid include/linux/mmzone.h:2069 [inline]
WARNING: CPU: 1 PID: 6441 at ./include/linux/mm.h:2250 lowmem_page_address include/linux/mm.h:2250 [inline]
WARNING: CPU: 1 PID: 6441 at ./include/linux/mm.h:2250 kmap_local_page+0x388/0x500 include/linux/highmem-internal.h:180
Modules linked in:
CPU: 1 UID: 0 PID: 6441 Comm: syz-executor168 Tainted: G B 6.14.0-rc3-syzkaller-ga1c24ab82279 #0
Tainted: [B]=BAD_PAGE
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : lowmem_page_address include/linux/rcupdate.h:964 [inline]
pc : kmap_local_page+0x388/0x500 include/linux/highmem-internal.h:180
lr : pfn_valid include/linux/mmzone.h:2061 [inline]
lr : lowmem_page_address include/linux/mm.h:2250 [inline]
lr : kmap_local_page+0x148/0x500 include/linux/highmem-internal.h:180
sp : ffff8000a4a15bf0
x29: ffff8000a4a15bf0 x28: ffff0000dc472000 x27: 1ffff00014942b8c
x26: 1fffe0001b88e403 x25: 1fffe0001b88f5fb x24: ffff80008f4d4000
x23: 1ffff00011e9a8a9 x22: ffff8000a4a15c80 x21: dfff800000000000
x20: ffff0000c1d28900 x19: 049004df41001929 x18: 0000000000000008
x17: 0000000000000000 x16: ffff80008b7275dc x15: 0000000000000001
x14: 1ffff0001262e6f8 x13: 0000000000000000 x12: 0000000000000000
x11: ffff70001262e6f9 x10: 0000000000ff0100 x9 : 0000000000000000
x8 : ffff0000c5fa0000 x7 : 0000000000000001 x6 : 0000000000000001
x5 : ffff8000a4a152f8 x4 : ffff80008fcaf720 x3 : ffff8000802f88ec
x2 : 0000000000000001 x1 : 049004df41001929 x0 : 0400000000000000
Call trace:
rcu_read_unlock_sched include/linux/rcupdate.h:964 [inline] (P)
pfn_valid include/linux/mmzone.h:2069 [inline] (P)
lowmem_page_address include/linux/mm.h:2250 [inline] (P)
kmap_local_page+0x388/0x500 include/linux/highmem-internal.h:180 (P)
hfsplus_bmap_alloc+0x158/0x538
hfs_btree_inc_height+0xf8/0xa60 fs/hfsplus/brec.c:475
hfsplus_brec_insert+0x11c/0xaa0 fs/hfsplus/brec.c:75
__hfsplus_ext_write_extent+0x288/0x4ac fs/hfsplus/extents.c:107
__hfsplus_ext_cache_extent+0x84/0xa84 fs/hfsplus/extents.c:186
hfsplus_ext_read_extent fs/hfsplus/extents.c:218 [inline]
hfsplus_file_extend+0x39c/0x1544 fs/hfsplus/extents.c:462
hfsplus_get_block+0x398/0x1168 fs/hfsplus/extents.c:245
__block_write_begin_int+0x4c4/0x1610 fs/buffer.c:2116
block_write_begin fs/buffer.c:2226 [inline]
cont_write_begin+0x634/0x984 fs/buffer.c:2577
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
cont_expand_zero fs/buffer.c:2504 [inline]
cont_write_begin+0x2b0/0x984 fs/buffer.c:2567
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
generic_perform_write+0x29c/0x868 mm/filemap.c:4189
__generic_file_write_iter+0xfc/0x204 mm/filemap.c:4290
generic_file_write_iter+0x108/0x4b0 mm/filemap.c:4316
__kernel_write_iter+0x340/0x7a0 fs/read_write.c:612
dump_emit_page fs/coredump.c:884 [inline]
dump_user_range+0x378/0x6c8 fs/coredump.c:945
elf_core_dump+0x336c/0x3c38 fs/binfmt_elf.c:2129
do_coredump+0x1d28/0x29a0 fs/coredump.c:758
get_signal+0xf6c/0x1500 kernel/signal.c:3021
do_signal+0x1a4/0x3a04 arch/arm64/kernel/signal.c:1658
do_notify_resume+0x74/0x1f4 arch/arm64/kernel/entry-common.c:148
exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:169 [inline]
exit_to_user_mode arch/arm64/kernel/entry-common.c:178 [inline]
el0_da+0xbc/0x178 arch/arm64/kernel/entry-common.c:605
el0t_64_sync_handler+0xcc/0x108 arch/arm64/kernel/entry-common.c:765
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
irq event stamp: 9593
hardirqs last enabled at (9593): [<ffff8000803d4db4>] raw_spin_rq_unlock_irq+0x14/0x24 kernel/sched/sched.h:1533
hardirqs last disabled at (9592): [<ffff80008b7d0e04>] __schedule+0x2bc/0x257c kernel/sched/core.c:6668
softirqs last enabled at (7186): [<ffff800080311b48>] softirq_handle_end kernel/softirq.c:407 [inline]
softirqs last enabled at (7186): [<ffff800080311b48>] handle_softirqs+0xb44/0xd34 kernel/softirq.c:589
softirqs last disabled at (7173): [<ffff800080020dbc>] __do_softirq+0x14/0x20 kernel/softirq.c:595
---[ end trace 0000000000000000 ]---
Unable to handle kernel paging request at virtual address fffd86fa0000cb28
KASAN: maybe wild-memory-access in range [0xfff037d000065940-0xfff037d000065947]
Mem abort info:
ESR = 0x0000000096000004
EC = 0x25: DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
FSC = 0x04: level 0 translation fault
Data abort info:
ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
CM = 0, WnR = 0, TnD = 0, TagAccess = 0
GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
swapper pgtable: 4k pages, 48-bit VAs, pgdp=00000001a50a6000
[fffd86fa0000cb28] pgd=0000000000000000, p4d=0000000000000000
Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
Modules linked in:
CPU: 1 UID: 0 PID: 6441 Comm: syz-executor168 Tainted: G B W 6.14.0-rc3-syzkaller-ga1c24ab82279 #0
Tainted: [B]=BAD_PAGE, [W]=WARN
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : hfsplus_bmap_alloc+0x180/0x538 fs/hfsplus/btree.c:404
lr : hfsplus_bmap_alloc+0x16c/0x538 fs/hfsplus/btree.c:403
sp : ffff8000a4a15c40
x29: ffff8000a4a15cc0 x28: 0000000000000f00 x27: 1ffff00014942b8c
x26: fff037d000064a40 x25: fff037d000065940 x24: 00000000ffff90f8
x23: ffff0000c1d289c0 x22: ffff8000a4a15c80 x21: dfff800000000000
x20: ffff0000c1d28900 x19: 1ffe06fa0000cb28 x18: 0000000000000008
x17: 0000000000000000 x16: ffff80008b7275dc x15: 0000000000000001
x14: 1ffff0001262e6f8 x13: 0000000000000000 x12: 0000000000000000
x11: ffff70001262e6f9 x10: 0000000000ff0100 x9 : 0000000000000000
x8 : ffff0000c5fa0000 x7 : 0000000000000001 x6 : 0000000000000001
x5 : ffff8000a4a152f8 x4 : ffff80008fcaf720 x3 : ffff8000802f88ec
x2 : 0000000000000001 x1 : 00000000000090f8 x0 : 0000000000000000
Call trace:
hfsplus_bmap_alloc+0x180/0x538 fs/hfsplus/btree.c:404 (P)
hfs_btree_inc_height+0xf8/0xa60 fs/hfsplus/brec.c:475
hfsplus_brec_insert+0x11c/0xaa0 fs/hfsplus/brec.c:75
__hfsplus_ext_write_extent+0x288/0x4ac fs/hfsplus/extents.c:107
__hfsplus_ext_cache_extent+0x84/0xa84 fs/hfsplus/extents.c:186
hfsplus_ext_read_extent fs/hfsplus/extents.c:218 [inline]
hfsplus_file_extend+0x39c/0x1544 fs/hfsplus/extents.c:462
hfsplus_get_block+0x398/0x1168 fs/hfsplus/extents.c:245
__block_write_begin_int+0x4c4/0x1610 fs/buffer.c:2116
block_write_begin fs/buffer.c:2226 [inline]
cont_write_begin+0x634/0x984 fs/buffer.c:2577
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
cont_expand_zero fs/buffer.c:2504 [inline]
cont_write_begin+0x2b0/0x984 fs/buffer.c:2567
hfsplus_write_begin+0x7c/0xc4 fs/hfsplus/inode.c:46
generic_perform_write+0x29c/0x868 mm/filemap.c:4189
__generic_file_write_iter+0xfc/0x204 mm/filemap.c:4290
generic_file_write_iter+0x108/0x4b0 mm/filemap.c:4316
__kernel_write_iter+0x340/0x7a0 fs/read_write.c:612
dump_emit_page fs/coredump.c:884 [inline]
dump_user_range+0x378/0x6c8 fs/coredump.c:945
elf_core_dump+0x336c/0x3c38 fs/binfmt_elf.c:2129
do_coredump+0x1d28/0x29a0 fs/coredump.c:758
get_signal+0xf6c/0x1500 kernel/signal.c:3021
do_signal+0x1a4/0x3a04 arch/arm64/kernel/signal.c:1658
do_notify_resume+0x74/0x1f4 arch/arm64/kernel/entry-common.c:148
exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:169 [inline]
exit_to_user_mode arch/arm64/kernel/entry-common.c:178 [inline]
el0_da+0xbc/0x178 arch/arm64/kernel/entry-common.c:605
el0t_64_sync_handler+0xcc/0x108 arch/arm64/kernel/entry-common.c:765
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
Code: 12002e7c 8b3c4359 d343ff33 12000b29 (38f56a68)
---[ end trace 0000000000000000 ]---
----------------
Code disassembly (best guess):
0: 12002e7c and w28, w19, #0xfff
4: 8b3c4359 add x25, x26, w28, uxtw
8: d343ff33 lsr x19, x25, #3
c: 12000b29 and w9, w25, #0x7
* 10: 38f56a68 ldrsb w8, [x19, x21] <-- trapping instruction
---
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@...glegroups.com.
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 syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.
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
Powered by blists - more mailing lists