UBSAN: array-index-out-of-bounds in super_90_validate

Status: upstream: reported C repro on 2026/11/07 18:56
Reported-by: syzbot+5ef6771bc467895624dd@syzkaller.appspotmail.com
First crash: 5d18h, last: 5d07h

Sample crash report:
block device autoloading is deprecated and will be removed.
md/raid1:md0: active with 1 out of 1027 mirrors
md0: detected capacity change from 0 to 5884
================================================================================
UBSAN: array-index-out-of-bounds in drivers/md/md.c:1390:20
index 1027 is out of range for type 'mdp_disk_t[27]' (aka 'struct mdp_device_descriptor_s[27]')
CPU: 1 PID: 4517 Comm: syz.0.17 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/06/2026
Call trace:
 dump_backtrace+0x1c4/0x1f0 arch/arm64/kernel/stacktrace.c:158
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165
 __dump_stack+0x30/0x40 lib/dump_stack.c:88
 dump_stack_lvl+0xf4/0x15c lib/dump_stack.c:106
 dump_stack+0x1c/0x5c lib/dump_stack.c:113
 ubsan_epilogue+0x14/0x48 lib/ubsan.c:151
 __ubsan_handle_out_of_bounds+0xd0/0xf8 lib/ubsan.c:282
 super_90_validate+0x110c/0x15b8 drivers/md/md.c:1390
 add_bound_rdev+0x128/0x494 drivers/md/md.c:2908
 md_add_new_disk+0xc0c/0x1484 drivers/md/md.c:-1
 md_ioctl+0x2158/0x25cc drivers/md/md.c:7807
 blkdev_ioctl+0x654/0xb74 block/ioctl.c:626
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:870 [inline]
 __se_sys_ioctl fs/ioctl.c:856 [inline]
 __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:856
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x290 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x13c/0x258 arch/arm64/kernel/syscall.c:140
 do_el0_svc+0x5c/0x134 arch/arm64/kernel/syscall.c:204
 el0_svc+0x58/0x12c arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:589
================================================================================
==================================================================
BUG: KASAN: use-after-free in super_90_validate+0x1128/0x15b8 drivers/md/md.c:1392
Read of size 4 at addr ffff0000cbb36390 by task syz.0.17/4517

CPU: 1 PID: 4517 Comm: syz.0.17 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/06/2026
Call trace:
 dump_backtrace+0x1c4/0x1f0 arch/arm64/kernel/stacktrace.c:158
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165
 __dump_stack+0x30/0x40 lib/dump_stack.c:88
 dump_stack_lvl+0xf4/0x15c lib/dump_stack.c:106
 print_address_description+0x88/0x218 mm/kasan/report.c:316
 print_report+0x50/0x68 mm/kasan/report.c:420
 kasan_report+0xa8/0xfc mm/kasan/report.c:524
 __asan_report_load4_noabort+0x2c/0x38 mm/kasan/report_generic.c:350
 super_90_validate+0x1128/0x15b8 drivers/md/md.c:1392
 add_bound_rdev+0x128/0x494 drivers/md/md.c:2908
 md_add_new_disk+0xc0c/0x1484 drivers/md/md.c:-1
 md_ioctl+0x2158/0x25cc drivers/md/md.c:7807
 blkdev_ioctl+0x654/0xb74 block/ioctl.c:626
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:870 [inline]
 __se_sys_ioctl fs/ioctl.c:856 [inline]
 __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:856
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x290 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x13c/0x258 arch/arm64/kernel/syscall.c:140
 do_el0_svc+0x5c/0x134 arch/arm64/kernel/syscall.c:204
 el0_svc+0x58/0x12c arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:589

Allocated by task 4433:
 kasan_save_stack mm/kasan/common.c:46 [inline]
 kasan_set_track+0x4c/0x80 mm/kasan/common.c:53
 kasan_save_alloc_info+0x24/0x30 mm/kasan/generic.c:505
 ____kasan_kmalloc mm/kasan/common.c:375 [inline]
 __kasan_kmalloc+0xa0/0xb8 mm/kasan/common.c:384
 kasan_kmalloc include/linux/kasan.h:211 [inline]
 __do_kmalloc_node mm/slab_common.c:936 [inline]
 __kmalloc_node+0xdc/0x184 mm/slab_common.c:943
 kmalloc_node include/linux/slab.h:589 [inline]
 kzalloc_node include/linux/slab.h:710 [inline]
 qdisc_alloc+0x8c/0x930 net/sched/sch_generic.c:971
 qdisc_create_dflt+0x70/0x554 net/sched/sch_generic.c:1033
 attach_one_default_qdisc net/sched/sch_generic.c:1197 [inline]
 netdev_for_each_tx_queue include/linux/netdevice.h:2474 [inline]
 attach_default_qdiscs net/sched/sch_generic.c:1215 [inline]
 dev_activate+0x2fc/0xf58 net/sched/sch_generic.c:1274
 __dev_open+0x384/0x4dc net/core/dev.c:1510
 __dev_change_flags+0x1a8/0x560 net/core/dev.c:8695
 dev_change_flags+0x80/0x15c net/core/dev.c:8767
 do_setlink+0x9d0/0x2158 net/core/rtnetlink.c:2845
 __rtnl_newlink net/core/rtnetlink.c:3622 [inline]
 rtnl_newlink+0x142c/0x1af0 net/core/rtnetlink.c:3669
 rtnetlink_rcv_msg+0x694/0xcc4 net/core/rtnetlink.c:6166
 netlink_rcv_skb+0x220/0x3ec net/netlink/af_netlink.c:2516
 rtnetlink_rcv+0x28/0x38 net/core/rtnetlink.c:6184
 netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline]
 netlink_unicast+0x5fc/0x80c net/netlink/af_netlink.c:1344
 netlink_sendmsg+0x6f0/0x9d8 net/netlink/af_netlink.c:1877
 sock_sendmsg_nosec net/socket.c:718 [inline]
 __sock_sendmsg net/socket.c:730 [inline]
 __sys_sendto+0x324/0x440 net/socket.c:2153
 __do_sys_sendto net/socket.c:2165 [inline]
 __se_sys_sendto net/socket.c:2161 [inline]
 __arm64_sys_sendto+0xe4/0x104 net/socket.c:2161
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x290 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x13c/0x258 arch/arm64/kernel/syscall.c:140
 do_el0_svc+0x5c/0x134 arch/arm64/kernel/syscall.c:204
 el0_svc+0x58/0x12c arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:589

Freed by task 0:
 kasan_save_stack mm/kasan/common.c:46 [inline]
 kasan_set_track+0x4c/0x80 mm/kasan/common.c:53
 kasan_save_free_info+0x38/0x5c mm/kasan/generic.c:516
 ____kasan_slab_free+0x148/0x1b0 mm/kasan/common.c:237
 __kasan_slab_free+0x18/0x28 mm/kasan/common.c:245
 kasan_slab_free include/linux/kasan.h:177 [inline]
 slab_free_hook mm/slub.c:1735 [inline]
 slab_free_freelist_hook+0x16c/0x1e8 mm/slub.c:1761
 slab_free mm/slub.c:3694 [inline]
 __kmem_cache_free+0xbc/0x21c mm/slub.c:3707
 kfree+0xd0/0x1a8 mm/slab_common.c:988
 qdisc_free_cb+0xac/0xd0 net/sched/sch_generic.c:1078
 rcu_do_batch kernel/rcu/tree.c:2297 [inline]
 rcu_core+0x848/0x18e8 kernel/rcu/tree.c:2557
 rcu_core_si+0x10/0x1c kernel/rcu/tree.c:2574
 handle_softirqs+0x318/0xc90 kernel/softirq.c:596
 __do_softirq+0x14/0x20 kernel/softirq.c:630

Last potentially related work creation:
 kasan_save_stack+0x40/0x70 mm/kasan/common.c:46
 __kasan_record_aux_stack+0xc0/0xdc mm/kasan/generic.c:486
 kasan_record_aux_stack_noalloc+0x14/0x20 mm/kasan/generic.c:496
 call_rcu+0x104/0x958 kernel/rcu/tree.c:2849
 qdisc_free_rcu net/sched/sch_generic.c:1083 [inline]
 __qdisc_destroy+0x2b0/0x500 net/sched/sch_generic.c:1108
 qdisc_put net/sched/sch_generic.c:1128 [inline]
 dev_shutdown+0x35c/0x478 net/sched/sch_generic.c:1489
 unregister_netdevice_many_notify+0x998/0x1900 net/core/dev.c:11038
 unregister_netdevice_many net/core/dev.c:11101 [inline]
 default_device_exit_batch+0x9d4/0xa70 net/core/dev.c:11573
 ops_exit_list net/core/net_namespace.c:177 [inline]
 cleanup_net+0x650/0xa90 net/core/net_namespace.c:640
 process_one_work+0x7e4/0x13bc kernel/workqueue.c:2292
 worker_thread+0x8cc/0xfe8 kernel/workqueue.c:2439
 kthread+0x254/0x2e0 kernel/kthread.c:376
 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854

The buggy address belongs to the object at ffff0000cbb36000
 which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 912 bytes inside of
 1024-byte region [ffff0000cbb36000, ffff0000cbb36400)

The buggy address belongs to the physical page:
page:000000004b7a628e refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x10bb30
head:000000004b7a628e order:3 compound_mapcount:0 compound_pincount:0
flags: 0x5ffc00000010200(slab|head|node=0|zone=2|lastcpupid=0x7ff)
raw: 05ffc00000010200 0000000000000000 dead000000000122 ffff0000c0002780
raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff0000cbb36280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff0000cbb36300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff0000cbb36380: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                         ^
 ffff0000cbb36400: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff0000cbb36480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================

Crashes (5):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/11/07 20:33 linux-6.1.y c75b0cf0982c 5cecaf1f .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 UBSAN: array-index-out-of-bounds in super_90_validate
2026/11/07 20:03 linux-6.1.y c75b0cf0982c 5cecaf1f .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 UBSAN: array-index-out-of-bounds in super_90_validate
2026/11/07 19:32 linux-6.1.y c75b0cf0982c 5cecaf1f .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 UBSAN: array-index-out-of-bounds in super_90_validate
2026/11/08 05:37 linux-6.1.y c75b0cf0982c 5cecaf1f .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 UBSAN: array-index-out-of-bounds in super_90_validate
2026/11/07 18:55 linux-6.1.y c75b0cf0982c 5cecaf1f .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 UBSAN: array-index-out-of-bounds in super_90_validate
* Struck through repros no longer work on HEAD.