================================================================== BUG: KASAN: slab-use-after-free in __up_read+0xb4/0x5f8 kernel/locking/rwsem.c:1342 Read of size 8 at addr ffff0000d9b71868 by task syz-executor131/6940 CPU: 1 PID: 6940 Comm: syz-executor131 Not tainted 6.6.0-rc7-syzkaller-g8de1e7afcc1c #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/09/2023 Call trace: dump_backtrace+0x1b8/0x1e4 arch/arm64/kernel/stacktrace.c:233 show_stack+0x2c/0x44 arch/arm64/kernel/stacktrace.c:240 __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xd0/0x124 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:364 [inline] print_report+0x174/0x514 mm/kasan/report.c:475 kasan_report+0xd8/0x138 mm/kasan/report.c:588 __asan_report_load8_noabort+0x20/0x2c mm/kasan/report_generic.c:381 __up_read+0xb4/0x5f8 kernel/locking/rwsem.c:1342 up_read+0x2c/0x3c kernel/locking/rwsem.c:1616 iommufd_put_object drivers/iommu/iommufd/iommufd_private.h:149 [inline] iommufd_vfio_ioas+0x2a8/0x5b4 drivers/iommu/iommufd/vfio_compat.c:146 iommufd_fops_ioctl+0x590/0x6d8 drivers/iommu/iommufd/main.c:398 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:871 [inline] __se_sys_ioctl fs/ioctl.c:857 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:857 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 Allocated by task 6940: kasan_save_stack mm/kasan/common.c:45 [inline] kasan_set_track+0x4c/0x7c mm/kasan/common.c:52 kasan_save_alloc_info+0x24/0x30 mm/kasan/generic.c:511 ____kasan_kmalloc mm/kasan/common.c:374 [inline] __kasan_kmalloc+0xac/0xc4 mm/kasan/common.c:383 kasan_kmalloc include/linux/kasan.h:198 [inline] __do_kmalloc_node mm/slab_common.c:1026 [inline] __kmalloc+0xcc/0x1b8 mm/slab_common.c:1039 kmalloc include/linux/slab.h:603 [inline] kzalloc include/linux/slab.h:720 [inline] _iommufd_object_alloc+0x3c/0x1c4 drivers/iommu/iommufd/main.c:40 iommufd_ioas_alloc drivers/iommu/iommufd/ioas.c:27 [inline] iommufd_ioas_alloc_ioctl+0xa8/0x1fc drivers/iommu/iommufd/ioas.c:46 iommufd_fops_ioctl+0x590/0x6d8 drivers/iommu/iommufd/main.c:398 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:871 [inline] __se_sys_ioctl fs/ioctl.c:857 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:857 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 Freed by task 6946: kasan_save_stack mm/kasan/common.c:45 [inline] kasan_set_track+0x4c/0x7c mm/kasan/common.c:52 kasan_save_free_info+0x38/0x5c mm/kasan/generic.c:522 ____kasan_slab_free+0x144/0x1c0 mm/kasan/common.c:236 __kasan_slab_free+0x18/0x28 mm/kasan/common.c:244 kasan_slab_free include/linux/kasan.h:164 [inline] slab_free_hook mm/slub.c:1800 [inline] slab_free_freelist_hook mm/slub.c:1826 [inline] slab_free mm/slub.c:3809 [inline] __kmem_cache_free+0x2ac/0x480 mm/slub.c:3822 kfree+0xb8/0x19c mm/slab_common.c:1075 iommufd_destroy+0x298/0x2dc drivers/iommu/iommufd/main.c:216 iommufd_fops_ioctl+0x590/0x6d8 drivers/iommu/iommufd/main.c:398 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:871 [inline] __se_sys_ioctl fs/ioctl.c:857 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:857 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 The buggy address belongs to the object at ffff0000d9b71800 which belongs to the cache kmalloc-cg-1k of size 1024 The buggy address is located 104 bytes inside of freed 1024-byte region [ffff0000d9b71800, ffff0000d9b71c00) The buggy address belongs to the physical page: page:00000000de21d4e7 refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff0000d9b77800 pfn:0x119b70 head:00000000de21d4e7 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0 ksm flags: 0x5ffc00000000840(slab|head|node=0|zone=2|lastcpupid=0x7ff) page_type: 0xffffffff() raw: 05ffc00000000840 ffff0000c000f280 fffffc000334c600 0000000000000003 raw: ffff0000d9b77800 0000000080100009 00000001ffffffff 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff0000d9b71700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff0000d9b71780: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff0000d9b71800: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff0000d9b71880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff0000d9b71900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ================================================================== ------------[ cut here ]------------ DEBUG_RWSEMS_WARN_ON(!is_rwsem_reader_owned(sem)): count = 0xffff0000c53f0dc0, magic = 0xffff0000d9b71800, owner = 0x4ac029100001b22, curr 0xffff0000d6b0b780, list empty WARNING: CPU: 1 PID: 6940 at kernel/locking/rwsem.c:1343 __up_read+0x554/0x5f8 kernel/locking/rwsem.c:1343 Modules linked in: CPU: 1 PID: 6940 Comm: syz-executor131 Tainted: G B 6.6.0-rc7-syzkaller-g8de1e7afcc1c #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/09/2023 pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : __up_read+0x554/0x5f8 kernel/locking/rwsem.c:1343 lr : __up_read+0x554/0x5f8 kernel/locking/rwsem.c:1343 sp : ffff800097e37a40 x29: ffff800097e37ad0 x28: 1ffff00011c680bc x27: ffff80008e340000 x26: dfff800000000000 x25: ffff0000c53f0dc0 x24: ffff0000d9b71858 x23: ffff0000d6b0b780 x22: ffff800097e37a60 x21: 04ac029100001b22 x20: ffff0000d9b71800 x19: ffff0000d9b71800 x18: 1fffe000368333ce x17: ffff80008e33d000 x16: ffff80008a719c70 x15: 0000000000000001 x14: 1ffff00011d6df13 x13: 0000000000000000 x12: 0000000000000000 x11: 0000000000000001 x10: 0000000000000000 x9 : 936c9d0d4b89bb00 x8 : 936c9d0d4b89bb00 x7 : ffff80008005f20c x6 : ffff80008005f408 x5 : ffff0000d549cd18 x4 : ffff800097e373c0 x3 : 0000000000000000 x2 : ffff0000d6b0b780 x1 : 0000000000000000 x0 : ffff8000803b32ac Call trace: __up_read+0x554/0x5f8 kernel/locking/rwsem.c:1343 up_read+0x2c/0x3c kernel/locking/rwsem.c:1616 iommufd_put_object drivers/iommu/iommufd/iommufd_private.h:149 [inline] iommufd_vfio_ioas+0x2a8/0x5b4 drivers/iommu/iommufd/vfio_compat.c:146 iommufd_fops_ioctl+0x590/0x6d8 drivers/iommu/iommufd/main.c:398 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:871 [inline] __se_sys_ioctl fs/ioctl.c:857 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:857 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 irq event stamp: 2049 hardirqs last enabled at (2049): [] __call_rcu_common kernel/rcu/tree.c:2689 [inline] hardirqs last enabled at (2049): [] call_rcu+0x63c/0xaf4 kernel/rcu/tree.c:2767 hardirqs last disabled at (2048): [] __call_rcu_common kernel/rcu/tree.c:2654 [inline] hardirqs last disabled at (2048): [] call_rcu+0x114/0xaf4 kernel/rcu/tree.c:2767 softirqs last enabled at (1186): [] local_bh_enable+0x10/0x34 include/linux/bottom_half.h:32 softirqs last disabled at (1184): [] local_bh_disable+0x10/0x34 include/linux/bottom_half.h:19 ---[ end trace 0000000000000000 ]--- ------------[ cut here ]------------ DEBUG_RWSEMS_WARN_ON(tmp < 0): count = 0xffff0000c53f0cc0, magic = 0xffff0000d9b71800, owner = 0x4ac029100001b22, curr 0xffff0000d6b0b780, list empty WARNING: CPU: 1 PID: 6940 at kernel/locking/rwsem.c:1348 __up_read+0x3bc/0x5f8 kernel/locking/rwsem.c:1348 Modules linked in: CPU: 1 PID: 6940 Comm: syz-executor131 Tainted: G B W 6.6.0-rc7-syzkaller-g8de1e7afcc1c #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/09/2023 pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : __up_read+0x3bc/0x5f8 kernel/locking/rwsem.c:1348 lr : __up_read+0x3bc/0x5f8 kernel/locking/rwsem.c:1348 sp : ffff800097e37a40 x29: ffff800097e37ad0 x28: 1ffff00011c680bc x27: ffff80008e340000 x26: dfff800000000000 x25: ffff0000c53f0cc0 x24: ffff0000d9b71858 x23: ffff0000d9b71800 x22: ffff0000c53f0cc0 x21: 04ac029100001b22 x20: ffff0000d6b0b780 x19: ffff0000d9b71800 x18: 1fffe000368333ce x17: 0000000000000000 x16: ffff80008a668900 x15: 0000000000000001 x14: 1ffff00012fc6e64 x13: 0000000000000000 x12: 0000000000000000 x11: 0000000000000001 x10: 0000000000000000 x9 : 936c9d0d4b89bb00 x8 : 936c9d0d4b89bb00 x7 : 0000000000000001 x6 : 0000000000000001 x5 : ffff800097e37338 x4 : ffff80008e4210a0 x3 : ffff8000803639bc x2 : 0000000000000001 x1 : 0000000000000001 x0 : 0000000000000000 Call trace: __up_read+0x3bc/0x5f8 kernel/locking/rwsem.c:1348 up_read+0x2c/0x3c kernel/locking/rwsem.c:1616 iommufd_put_object drivers/iommu/iommufd/iommufd_private.h:149 [inline] iommufd_vfio_ioas+0x2a8/0x5b4 drivers/iommu/iommufd/vfio_compat.c:146 iommufd_fops_ioctl+0x590/0x6d8 drivers/iommu/iommufd/main.c:398 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:871 [inline] __se_sys_ioctl fs/ioctl.c:857 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:857 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 irq event stamp: 2049 hardirqs last enabled at (2049): [] __call_rcu_common kernel/rcu/tree.c:2689 [inline] hardirqs last enabled at (2049): [] call_rcu+0x63c/0xaf4 kernel/rcu/tree.c:2767 hardirqs last disabled at (2048): [] __call_rcu_common kernel/rcu/tree.c:2654 [inline] hardirqs last disabled at (2048): [] call_rcu+0x114/0xaf4 kernel/rcu/tree.c:2767 softirqs last enabled at (1186): [] local_bh_enable+0x10/0x34 include/linux/bottom_half.h:32 softirqs last disabled at (1184): [] local_bh_disable+0x10/0x34 include/linux/bottom_half.h:19 ---[ end trace 0000000000000000 ]---