================================================================== BUG: KASAN: slab-use-after-free in netfs_unbuffered_write+0x1bde/0x21b0 fs/netfs/direct_write.c:119 Read of size 2 at addr ffff8880550ae1e4 by task syz.1.4467/20528 CPU: 1 UID: 0 PID: 20528 Comm: syz.1.4467 Tainted: G L syzkaller #0 PREEMPT(full) Tainted: [L]=SOFTLOCKUP Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x100/0x190 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0x13d/0x4b0 mm/kasan/report.c:482 kasan_report+0xdf/0x1c0 mm/kasan/report.c:595 netfs_unbuffered_write+0x1bde/0x21b0 fs/netfs/direct_write.c:119 netfs_unbuffered_write_iter_locked+0x7cd/0xa80 fs/netfs/direct_write.c:294 netfs_unbuffered_write_iter+0x442/0x720 fs/netfs/direct_write.c:386 v9fs_file_write_iter+0xbf/0x100 fs/9p/vfs_file.c:409 iter_file_splice_write+0x830/0x10b0 fs/splice.c:736 do_splice_from fs/splice.c:936 [inline] direct_splice_actor+0x192/0x690 fs/splice.c:1159 splice_direct_to_actor+0x345/0xa30 fs/splice.c:1103 do_splice_direct_actor fs/splice.c:1202 [inline] do_splice_direct+0x174/0x240 fs/splice.c:1228 vfs_copy_file_range+0xc1b/0x1840 fs/read_write.c:1633 __do_sys_copy_file_range+0x1a1/0x460 fs/read_write.c:1682 do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline] __do_fast_syscall_32+0xe7/0x970 arch/x86/entry/syscall_32.c:307 do_fast_syscall_32+0x32/0x70 arch/x86/entry/syscall_32.c:332 entry_SYSENTER_compat_after_hwframe+0x84/0x8e RIP: 0023:0xf7f54fec Code: Unable to access opcode bytes at 0xf7f54fc2. RSP: 002b:00000000f53f550c EFLAGS: 00000292 ORIG_RAX: 0000000000000179 RAX: ffffffffffffffda RBX: 0000000000000007 RCX: 0000000000000000 RDX: 0000000000000005 RSI: 0000000000000000 RDI: 00000000e003e45c RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000292 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 Allocated by task 20528: kasan_save_stack+0x30/0x50 mm/kasan/common.c:57 kasan_save_track+0x14/0x30 mm/kasan/common.c:78 unpoison_slab_object mm/kasan/common.c:340 [inline] __kasan_slab_alloc+0x89/0x90 mm/kasan/common.c:366 kasan_slab_alloc include/linux/kasan.h:253 [inline] slab_post_alloc_hook mm/slub.c:4612 [inline] slab_alloc_node mm/slub.c:4945 [inline] kmem_cache_alloc_noprof+0x26b/0x6a0 mm/slub.c:4959 mempool_alloc_noprof+0x1b7/0x310 mm/mempool.c:559 netfs_alloc_subrequest+0xc1/0x3c0 fs/netfs/objects.c:204 netfs_prepare_write+0x76/0x780 fs/netfs/write_issue.c:172 netfs_unbuffered_write+0x7ba/0x21b0 fs/netfs/direct_write.c:111 netfs_unbuffered_write_iter_locked+0x7cd/0xa80 fs/netfs/direct_write.c:294 netfs_unbuffered_write_iter+0x442/0x720 fs/netfs/direct_write.c:386 v9fs_file_write_iter+0xbf/0x100 fs/9p/vfs_file.c:409 iter_file_splice_write+0x830/0x10b0 fs/splice.c:736 do_splice_from fs/splice.c:936 [inline] direct_splice_actor+0x192/0x690 fs/splice.c:1159 splice_direct_to_actor+0x345/0xa30 fs/splice.c:1103 do_splice_direct_actor fs/splice.c:1202 [inline] do_splice_direct+0x174/0x240 fs/splice.c:1228 vfs_copy_file_range+0xc1b/0x1840 fs/read_write.c:1633 __do_sys_copy_file_range+0x1a1/0x460 fs/read_write.c:1682 do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline] __do_fast_syscall_32+0xe7/0x970 arch/x86/entry/syscall_32.c:307 do_fast_syscall_32+0x32/0x70 arch/x86/entry/syscall_32.c:332 entry_SYSENTER_compat_after_hwframe+0x84/0x8e Freed by task 20528: kasan_save_stack+0x30/0x50 mm/kasan/common.c:57 kasan_save_track+0x14/0x30 mm/kasan/common.c:78 kasan_save_free_info+0x3b/0x70 mm/kasan/generic.c:584 poison_slab_object mm/kasan/common.c:253 [inline] __kasan_slab_free+0x5f/0x80 mm/kasan/common.c:285 kasan_slab_free include/linux/kasan.h:235 [inline] slab_free_hook mm/slub.c:2705 [inline] slab_free mm/slub.c:6405 [inline] kmem_cache_free+0x127/0x6b0 mm/slub.c:6532 mempool_free+0xde/0x130 mm/mempool.c:704 netfs_free_subrequest fs/netfs/objects.c:239 [inline] netfs_put_subrequest+0x282/0x4b0 fs/netfs/objects.c:255 netfs_unbuffered_write+0x13c0/0x21b0 fs/netfs/direct_write.c:118 netfs_unbuffered_write_iter_locked+0x7cd/0xa80 fs/netfs/direct_write.c:294 netfs_unbuffered_write_iter+0x442/0x720 fs/netfs/direct_write.c:386 v9fs_file_write_iter+0xbf/0x100 fs/9p/vfs_file.c:409 iter_file_splice_write+0x830/0x10b0 fs/splice.c:736 do_splice_from fs/splice.c:936 [inline] direct_splice_actor+0x192/0x690 fs/splice.c:1159 splice_direct_to_actor+0x345/0xa30 fs/splice.c:1103 do_splice_direct_actor fs/splice.c:1202 [inline] do_splice_direct+0x174/0x240 fs/splice.c:1228 vfs_copy_file_range+0xc1b/0x1840 fs/read_write.c:1633 __do_sys_copy_file_range+0x1a1/0x460 fs/read_write.c:1682 do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline] __do_fast_syscall_32+0xe7/0x970 arch/x86/entry/syscall_32.c:307 do_fast_syscall_32+0x32/0x70 arch/x86/entry/syscall_32.c:332 entry_SYSENTER_compat_after_hwframe+0x84/0x8e The buggy address belongs to the object at ffff8880550ae140 which belongs to the cache netfs_subrequest of size 200 The buggy address is located 164 bytes inside of freed 200-byte region [ffff8880550ae140, ffff8880550ae208) The buggy address belongs to the physical page: page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff8880550ae640 pfn:0x550ae head: order:1 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0 memcg:ffff8880550ae0d9 flags: 0x4fff00000000240(workingset|head|node=1|zone=1|lastcpupid=0x7ff) page_type: f5(slab) raw: 04fff00000000240 ffff8880416dadc0 ffffea0001414810 ffffea0001af7290 raw: ffff8880550ae640 000001400019000a 00000000f5000000 ffff8880550ae0d9 head: 04fff00000000240 ffff8880416dadc0 ffffea0001414810 ffffea0001af7290 head: ffff8880550ae640 000001400019000a 00000000f5000000 ffff8880550ae0d9 head: 04fff00000000001 ffffffffffffff81 00000000ffffffff 00000000ffffffff head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000002 page dumped because: kasan: bad access detected page_owner tracks the page as allocated page last allocated via order 1, migratetype Unmovable, gfp_mask 0xd2880(GFP_NOWAIT|__GFP_FS|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 10081, tgid 10060 (syz.5.1231), ts 278756343771, free_ts 277351386639 set_page_owner include/linux/page_owner.h:32 [inline] post_alloc_hook+0xfd/0x120 mm/page_alloc.c:1859 prep_new_page mm/page_alloc.c:1867 [inline] get_page_from_freelist+0xf48/0x3530 mm/page_alloc.c:3946 __alloc_frozen_pages_noprof+0x299/0x2dc0 mm/page_alloc.c:5304 alloc_slab_page mm/slub.c:3294 [inline] allocate_slab mm/slub.c:3408 [inline] new_slab+0xa2/0x650 mm/slub.c:3454 refill_objects+0xe3/0x410 mm/slub.c:7338 refill_sheaf mm/slub.c:2832 [inline] __pcs_replace_empty_main+0x376/0x680 mm/slub.c:4703 alloc_from_pcs mm/slub.c:4801 [inline] slab_alloc_node mm/slub.c:4933 [inline] kmem_cache_alloc_noprof+0x46e/0x6a0 mm/slub.c:4959 mempool_alloc_noprof+0x1b7/0x310 mm/mempool.c:559 netfs_alloc_subrequest+0xc1/0x3c0 fs/netfs/objects.c:204 netfs_dispatch_unbuffered_reads fs/netfs/direct_read.c:58 [inline] netfs_unbuffered_read fs/netfs/direct_read.c:128 [inline] netfs_unbuffered_read_iter_locked+0x5cc/0x11d0 fs/netfs/direct_read.c:211 netfs_unbuffered_read_iter+0xc5/0x100 fs/netfs/direct_read.c:250 v9fs_file_read_iter+0xbf/0x100 fs/9p/vfs_file.c:366 copy_splice_read+0x4ba/0xbb0 fs/splice.c:362 v9fs_file_splice_read+0xc8/0xe0 fs/9p/vfs_file.c:390 do_splice_read fs/splice.c:980 [inline] do_splice_read+0x285/0x370 fs/splice.c:954 splice_direct_to_actor+0x2a1/0xa30 fs/splice.c:1084 page last free pid 0 tgid 0 stack trace: reset_page_owner include/linux/page_owner.h:25 [inline] __free_pages_prepare mm/page_alloc.c:1406 [inline] __free_frozen_pages+0x79f/0x1090 mm/page_alloc.c:2950 rcu_do_batch kernel/rcu/tree.c:2645 [inline] rcu_core+0x5a2/0x10d0 kernel/rcu/tree.c:2897 handle_softirqs+0x1ea/0x9b0 kernel/softirq.c:622 __do_softirq kernel/softirq.c:656 [inline] invoke_softirq kernel/softirq.c:496 [inline] __irq_exit_rcu+0x162/0x210 kernel/softirq.c:735 irq_exit_rcu+0x9/0x30 kernel/softirq.c:752 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1062 [inline] sysvec_apic_timer_interrupt+0xa3/0xc0 arch/x86/kernel/apic/apic.c:1062 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:674 Memory state around the buggy address: ffff8880550ae080: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff8880550ae100: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb >ffff8880550ae180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff8880550ae200: fb fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff8880550ae280: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================