Jiaming Zhang
unread,Sep 14, 2025, 11:05:35 PMSep 14Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to fran...@vivo.com, glau...@physik.fu-berlin.de, linux-...@vger.kernel.org, sl...@dubeyko.com, linux-...@vger.kernel.org, syzk...@googlegroups.com
Dear Linux kernel developers and maintainers:
We are writing to report a slab-out-of-bounds bug discovered in the
hfsplus subsystem with our modified syzkaller. This bug is
reproducible on the latest version (v6.17-rc6, commit
f83ec76bf285bea5727f478a68b894f5543ca76e).
The kernel console output, kernel config, syzkaller reproducer, and C
reproducer are attached to this email to help analysis. The KASAN
report from v6.17-rc6, formatted by syz-symbolize, is listed below:
hfsplus: invalid length 63743 has been corrected to 255
==================================================================
BUG: KASAN: slab-out-of-bounds in hfsplus_strcasecmp+0x1bc/0x490
fs/hfsplus/unicode.c:47
Read of size 2 at addr ffff88804b8d640c by task repro.out/9757
CPU: 1 UID: 0 PID: 9757 Comm: repro.out Not tainted 6.17.0-rc6 #1 PREEMPT(full)
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x1c1/0x2a0 lib/dump_stack.c:120
print_address_description mm/kasan/report.c:378 [inline]
print_report+0x17e/0x810 mm/kasan/report.c:482
kasan_report+0x147/0x180 mm/kasan/report.c:595
hfsplus_strcasecmp+0x1bc/0x490 fs/hfsplus/unicode.c:47
hfs_find_rec_by_key+0xa6/0x1e0 fs/hfsplus/bfind.c:89
__hfsplus_brec_find+0x18b/0x480 fs/hfsplus/bfind.c:124
hfsplus_brec_find+0x289/0x500 fs/hfsplus/bfind.c:184
hfsplus_brec_read+0x2b/0x120 fs/hfsplus/bfind.c:211
hfsplus_lookup+0x2aa/0x890 fs/hfsplus/dir.c:52
__lookup_slow+0x294/0x3d0 fs/namei.c:1808
lookup_slow+0x53/0x70 fs/namei.c:1825
walk_component+0x2d4/0x400 fs/namei.c:2129
lookup_last fs/namei.c:2630 [inline]
path_lookupat+0x163/0x430 fs/namei.c:2654
filename_lookup+0x212/0x570 fs/namei.c:2683
user_path_at+0x3a/0x60 fs/namei.c:3127
ksys_umount fs/namespace.c:2112 [inline]
__do_sys_umount fs/namespace.c:2120 [inline]
__se_sys_umount fs/namespace.c:2118 [inline]
__x64_sys_umount+0xee/0x160 fs/namespace.c:2118
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xf3/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x452627
Code: 06 00 48 83 c4 08 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 c3 66
2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 a6 00 00 00 0f 05 <48> 3d
01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffc5dd08ae8 EFLAGS: 00000206 ORIG_RAX: 00000000000000a6
RAX: ffffffffffffffda RBX: 00000000004004a0 RCX: 0000000000452627
RDX: 0000000000000009 RSI: 0000000000000009 RDI: 00007ffc5dd08b90
RBP: 00007ffc5dd09bd0 R08: 0000000000000015 R09: 00007ffc5dd08980
R10: 00000000004b9560 R11: 0000000000000206 R12: 000000000040a070
R13: 0000000000000000 R14: 00000000004bc018 R15: 00000000004004a0
</TASK>
Allocated by task 9757:
kasan_save_stack mm/kasan/common.c:47 [inline]
kasan_save_track+0x3e/0x80 mm/kasan/common.c:68
poison_kmalloc_redzone mm/kasan/common.c:388 [inline]
__kasan_kmalloc+0x93/0xb0 mm/kasan/common.c:405
kasan_kmalloc include/linux/kasan.h:260 [inline]
__do_kmalloc_node mm/slub.c:4376 [inline]
__kmalloc_noprof+0x27a/0x4f0 mm/slub.c:4388
kmalloc_noprof include/linux/slab.h:909 [inline]
hfsplus_find_init+0x8c/0x1d0 fs/hfsplus/bfind.c:21
hfsplus_lookup+0x19c/0x890 fs/hfsplus/dir.c:44
__lookup_slow+0x294/0x3d0 fs/namei.c:1808
lookup_slow+0x53/0x70 fs/namei.c:1825
walk_component+0x2d4/0x400 fs/namei.c:2129
lookup_last fs/namei.c:2630 [inline]
path_lookupat+0x163/0x430 fs/namei.c:2654
filename_lookup+0x212/0x570 fs/namei.c:2683
user_path_at+0x3a/0x60 fs/namei.c:3127
ksys_umount fs/namespace.c:2112 [inline]
__do_sys_umount fs/namespace.c:2120 [inline]
__se_sys_umount fs/namespace.c:2118 [inline]
__x64_sys_umount+0xee/0x160 fs/namespace.c:2118
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xf3/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
The buggy address belongs to the object at ffff88804b8d6000
which belongs to the cache kmalloc-2k of size 2048
The buggy address is located 0 bytes to the right of
allocated 1036-byte region [ffff88804b8d6000, ffff88804b8d640c)
The buggy address belongs to the physical page:
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x4b8d0
head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
anon flags: 0x4fff00000000040(head|node=1|zone=1|lastcpupid=0x7ff)
page_type: f5(slab)
raw: 04fff00000000040 ffff88801a442000 0000000000000000 dead000000000001
raw: 0000000000000000 0000000080080008 00000000f5000000 0000000000000000
head: 04fff00000000040 ffff88801a442000 0000000000000000 dead000000000001
head: 0000000000000000 0000000080080008 00000000f5000000 0000000000000000
head: 04fff00000000003 ffffea00012e3401 00000000ffffffff 00000000ffffffff
head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 3, migratetype Unmovable, gfp_mask
0xd2040(__GFP_IO|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC),
pid 8133, tgid 8133 (sh), ts 23500816499, free_ts 23484371257
set_page_owner include/linux/page_owner.h:32 [inline]
post_alloc_hook+0x240/0x2a0 mm/page_alloc.c:1851
prep_new_page mm/page_alloc.c:1859 [inline]
get_page_from_freelist+0x21e4/0x22c0 mm/page_alloc.c:3858
__alloc_frozen_pages_noprof+0x181/0x370 mm/page_alloc.c:5148
alloc_pages_mpol+0x232/0x4a0 mm/mempolicy.c:2416
alloc_slab_page mm/slub.c:2492 [inline]
allocate_slab+0x8a/0x370 mm/slub.c:2660
new_slab mm/slub.c:2714 [inline]
___slab_alloc+0xbeb/0x1420 mm/slub.c:3901
__slab_alloc mm/slub.c:3992 [inline]
__slab_alloc_node mm/slub.c:4067 [inline]
slab_alloc_node mm/slub.c:4228 [inline]
__do_kmalloc_node mm/slub.c:4375 [inline]
__kmalloc_noprof+0x305/0x4f0 mm/slub.c:4388
kmalloc_noprof include/linux/slab.h:909 [inline]
kzalloc_noprof include/linux/slab.h:1039 [inline]
tomoyo_init_log+0x1a32/0x1f30 security/tomoyo/audit.c:275
tomoyo_supervisor+0x340/0x1490 security/tomoyo/common.c:2198
tomoyo_audit_env_log security/tomoyo/environ.c:36 [inline]
tomoyo_env_perm+0x149/0x1e0 security/tomoyo/environ.c:63
tomoyo_environ security/tomoyo/domain.c:672 [inline]
tomoyo_find_next_domain+0x15cf/0x1aa0 security/tomoyo/domain.c:888
tomoyo_bprm_check_security+0x11c/0x180 security/tomoyo/tomoyo.c:102
security_bprm_check+0x89/0x270 security/security.c:1302
search_binary_handler fs/exec.c:1660 [inline]
exec_binprm fs/exec.c:1702 [inline]
bprm_execve+0x8ee/0x1450 fs/exec.c:1754
do_execveat_common+0x521/0x6b0 fs/exec.c:1860
do_execve fs/exec.c:1934 [inline]
__do_sys_execve fs/exec.c:2010 [inline]
__se_sys_execve fs/exec.c:2005 [inline]
__x64_sys_execve+0x94/0xb0 fs/exec.c:2005
page last free pid 5289 tgid 5289 stack trace:
reset_page_owner include/linux/page_owner.h:25 [inline]
free_pages_prepare mm/page_alloc.c:1395 [inline]
__free_frozen_pages+0xbc0/0xd40 mm/page_alloc.c:2895
discard_slab mm/slub.c:2758 [inline]
__put_partials+0x156/0x1a0 mm/slub.c:3223
put_cpu_partial+0x17c/0x250 mm/slub.c:3298
__slab_free+0x2d5/0x3c0 mm/slub.c:4565
qlink_free mm/kasan/quarantine.c:163 [inline]
qlist_free_all+0x97/0x140 mm/kasan/quarantine.c:179
kasan_quarantine_reduce+0x148/0x160 mm/kasan/quarantine.c:286
__kasan_slab_alloc+0x22/0x80 mm/kasan/common.c:340
kasan_slab_alloc include/linux/kasan.h:250 [inline]
slab_post_alloc_hook mm/slub.c:4191 [inline]
slab_alloc_node mm/slub.c:4240 [inline]
kmem_cache_alloc_node_noprof+0x1bb/0x3c0 mm/slub.c:4292
__alloc_skb+0x12a/0x2f0 net/core/skbuff.c:659
netlink_sendmsg+0x5c6/0xb30 net/netlink/af_netlink.c:1871
sock_sendmsg_nosec net/socket.c:714 [inline]
__sock_sendmsg+0x219/0x270 net/socket.c:729
____sys_sendmsg+0x507/0x840 net/socket.c:2614
___sys_sendmsg+0x21f/0x2a0 net/socket.c:2668
__sys_sendmsg net/socket.c:2700 [inline]
__do_sys_sendmsg net/socket.c:2705 [inline]
__se_sys_sendmsg net/socket.c:2703 [inline]
__x64_sys_sendmsg+0x19b/0x260 net/socket.c:2703
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xf3/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
Memory state around the buggy address:
ffff88804b8d6300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff88804b8d6380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff88804b8d6400: 00 04 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
^
ffff88804b8d6480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff88804b8d6500: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================
Please let me know if any further information is required.
Best Regards,
Jiaming Zhang.