bisecting fixing commit since ddef1e8e3f6eb26034833b7255e3fa584d54a230 building syzkaller on 997ccc675b3dc049ad3ce922580397bd546956ea testing commit ddef1e8e3f6eb26034833b7255e3fa584d54a230 with gcc (GCC) 8.1.0 kernel signature: bd44febfa2d7e37144ec3a2cbb54c00cab68e8c19e85ea125d9a88e6500ae75b run #0: crashed: WARNING: held lock freed in pppol2tp_release run #1: crashed: WARNING: held lock freed in pppol2tp_release run #2: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #3: crashed: WARNING: held lock freed in pppol2tp_release run #4: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #5: crashed: WARNING: held lock freed in pppol2tp_release run #6: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #7: crashed: WARNING: held lock freed in pppol2tp_release run #8: crashed: WARNING: held lock freed in pppol2tp_release run #9: crashed: WARNING: held lock freed in pppol2tp_release testing current HEAD 98db2bf27b9ed2d5ed0b6c9c8a4bfcb127a19796 testing commit 98db2bf27b9ed2d5ed0b6c9c8a4bfcb127a19796 with gcc (GCC) 8.1.0 kernel signature: 1e68de0b33383c2cf2aa0fd4a93ca90befc3bdc4caeb205c16cb9851862fc5db run #0: crashed: WARNING: held lock freed in pppol2tp_release run #1: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #2: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #3: crashed: WARNING: held lock freed in pppol2tp_release run #4: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #5: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #6: crashed: WARNING: held lock freed in pppol2tp_release run #7: crashed: KASAN: use-after-free Read in l2tp_session_queue_purge run #8: crashed: WARNING: held lock freed in pppol2tp_release run #9: crashed: WARNING: held lock freed in pppol2tp_release revisions tested: 2, total time: 27m4.988022928s (build: 17m16.913369658s, test: 8m37.692501245s) the crash still happens on HEAD commit msg: Linux 4.14.171 crash: WARNING: held lock freed in pppol2tp_release ========================= WARNING: held lock freed! 4.14.171-syzkaller #0 Not tainted ------------------------- syz-executor.4/24094 is freeing memory ffff8880a93320c0-ffff8880a93328bf, with a lock still held there! (sk_lock-AF_PPPOX){+.+.}, at: [] lock_sock include/net/sock.h:1467 [inline] (sk_lock-AF_PPPOX){+.+.}, at: [] pppol2tp_release+0x45/0x290 net/l2tp/l2tp_ppp.c:476 2 locks held by syz-executor.4/24094: #0: (&sb->s_type->i_mutex_key#11){+.+.}, at: [] inode_lock include/linux/fs.h:718 [inline] #0: (&sb->s_type->i_mutex_key#11){+.+.}, at: [] __sock_release+0x7d/0x2a0 net/socket.c:601 #1: (sk_lock-AF_PPPOX){+.+.}, at: [] lock_sock include/net/sock.h:1467 [inline] #1: (sk_lock-AF_PPPOX){+.+.}, at: [] pppol2tp_release+0x45/0x290 net/l2tp/l2tp_ppp.c:476 stack backtrace: CPU: 1 PID: 24094 Comm: syz-executor.4 Not tainted 4.14.171-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0xf7/0x13b lib/dump_stack.c:58 print_freed_lock_bug kernel/locking/lockdep.c:4459 [inline] debug_check_no_locks_freed.cold.64+0x9e/0xaa kernel/locking/lockdep.c:4492 kfree+0xb1/0x270 mm/slab.c:3812 sk_prot_free net/core/sock.c:1504 [inline] __sk_destruct+0x3e1/0x4e0 net/core/sock.c:1581 sk_destruct+0x83/0xb0 net/core/sock.c:1596 __sk_free+0x47/0x1f0 net/core/sock.c:1604 sk_free+0x23/0x30 net/core/sock.c:1615 sock_put include/net/sock.h:1658 [inline] pppol2tp_release+0x21e/0x290 net/l2tp/l2tp_ppp.c:493 __sock_release+0xc2/0x2a0 net/socket.c:602 sock_close+0x10/0x20 net/socket.c:1139 __fput+0x232/0x750 fs/file_table.c:210 ____fput+0x9/0x10 fs/file_table.c:244 task_work_run+0xe5/0x170 kernel/task_work.c:113 tracehook_notify_resume include/linux/tracehook.h:191 [inline] exit_to_usermode_loop+0x16a/0x1b0 arch/x86/entry/common.c:164 prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline] syscall_return_slowpath arch/x86/entry/common.c:270 [inline] do_syscall_64+0x416/0x5b0 arch/x86/entry/common.c:297 entry_SYSCALL_64_after_hwframe+0x42/0xb7 RIP: 0033:0x459f49 RSP: 002b:00007fbd6ef1fc78 EFLAGS: 00000246 ORIG_RAX: 000000000000002a RAX: 0000000000000000 RBX: 0000000000000003 RCX: 0000000000459f49 RDX: 000000000000002e RSI: 0000000020000180 RDI: 0000000000000004 RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007fbd6ef206d4 R13: 00000000004c068b R14: 00000000004d2d58 R15: 00000000ffffffff ================================================================== BUG: KASAN: use-after-free in __read_once_size include/linux/compiler.h:183 [inline] BUG: KASAN: use-after-free in debug_spin_lock_before kernel/locking/spinlock_debug.c:83 [inline] BUG: KASAN: use-after-free in do_raw_spin_lock+0x1ef/0x230 kernel/locking/spinlock_debug.c:112 Read of size 4 at addr ffff8880a933214c by task syz-executor.4/24094 CPU: 1 PID: 24094 Comm: syz-executor.4 Not tainted 4.14.171-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0xf7/0x13b lib/dump_stack.c:58 print_address_description.cold.7+0x9/0x1c9 mm/kasan/report.c:252 kasan_report_error mm/kasan/report.c:351 [inline] kasan_report.cold.8+0x11a/0x2d3 mm/kasan/report.c:409 __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:429 __read_once_size include/linux/compiler.h:183 [inline] debug_spin_lock_before kernel/locking/spinlock_debug.c:83 [inline] do_raw_spin_lock+0x1ef/0x230 kernel/locking/spinlock_debug.c:112 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:136 [inline] _raw_spin_lock_bh+0x39/0x40 kernel/locking/spinlock.c:176 spin_lock_bh include/linux/spinlock.h:322 [inline] release_sock+0x1b/0x180 net/core/sock.c:2777 pppol2tp_release+0x1f5/0x290 net/l2tp/l2tp_ppp.c:495 __sock_release+0xc2/0x2a0 net/socket.c:602 sock_close+0x10/0x20 net/socket.c:1139 __fput+0x232/0x750 fs/file_table.c:210 ____fput+0x9/0x10 fs/file_table.c:244 task_work_run+0xe5/0x170 kernel/task_work.c:113 tracehook_notify_resume include/linux/tracehook.h:191 [inline] exit_to_usermode_loop+0x16a/0x1b0 arch/x86/entry/common.c:164 prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline] syscall_return_slowpath arch/x86/entry/common.c:270 [inline] do_syscall_64+0x416/0x5b0 arch/x86/entry/common.c:297 entry_SYSCALL_64_after_hwframe+0x42/0xb7 RIP: 0033:0x459f49 RSP: 002b:00007fbd6ef1fc78 EFLAGS: 00000246 ORIG_RAX: 000000000000002a RAX: 0000000000000000 RBX: 0000000000000003 RCX: 0000000000459f49 RDX: 000000000000002e RSI: 0000000020000180 RDI: 0000000000000004 RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007fbd6ef206d4 R13: 00000000004c068b R14: 00000000004d2d58 R15: 00000000ffffffff Allocated by task 24101: save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59 save_stack+0x43/0xd0 mm/kasan/kasan.c:447 set_track mm/kasan/kasan.c:459 [inline] kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:551 __do_kmalloc mm/slab.c:3720 [inline] __kmalloc+0x15b/0x7b0 mm/slab.c:3729 kmalloc include/linux/slab.h:493 [inline] sk_prot_alloc+0x146/0x240 net/core/sock.c:1467 sk_alloc+0x30/0xc10 net/core/sock.c:1521 pppol2tp_create+0x23/0x1d0 net/l2tp/l2tp_ppp.c:534 pppox_create+0xd3/0x1f0 drivers/net/ppp/pppox.c:134 __sock_create+0x262/0x540 net/socket.c:1275 sock_create net/socket.c:1315 [inline] SYSC_socket net/socket.c:1345 [inline] SyS_socket+0xc6/0x1a0 net/socket.c:1325 do_syscall_64+0x1c7/0x5b0 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x42/0xb7 Freed by task 24094: save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59 save_stack+0x43/0xd0 mm/kasan/kasan.c:447 set_track mm/kasan/kasan.c:459 [inline] kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524 __cache_free mm/slab.c:3496 [inline] kfree+0xcc/0x270 mm/slab.c:3815 sk_prot_free net/core/sock.c:1504 [inline] __sk_destruct+0x3e1/0x4e0 net/core/sock.c:1581 sk_destruct+0x83/0xb0 net/core/sock.c:1596 __sk_free+0x47/0x1f0 net/core/sock.c:1604 sk_free+0x23/0x30 net/core/sock.c:1615 sock_put include/net/sock.h:1658 [inline] pppol2tp_release+0x21e/0x290 net/l2tp/l2tp_ppp.c:493 __sock_release+0xc2/0x2a0 net/socket.c:602 sock_close+0x10/0x20 net/socket.c:1139 __fput+0x232/0x750 fs/file_table.c:210 ____fput+0x9/0x10 fs/file_table.c:244 task_work_run+0xe5/0x170 kernel/task_work.c:113 tracehook_notify_resume include/linux/tracehook.h:191 [inline] exit_to_usermode_loop+0x16a/0x1b0 arch/x86/entry/common.c:164 prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline] syscall_return_slowpath arch/x86/entry/common.c:270 [inline] do_syscall_64+0x416/0x5b0 arch/x86/entry/common.c:297 entry_SYSCALL_64_after_hwframe+0x42/0xb7 The buggy address belongs to the object at ffff8880a93320c0 which belongs to the cache kmalloc-2048 of size 2048 The buggy address is located 140 bytes inside of 2048-byte region [ffff8880a93320c0, ffff8880a93328c0) The buggy address belongs to the page: page:ffffea0002a4cc80 count:1 mapcount:0 mapping:ffff8880a93320c0 index:0x0 compound_mapcount: 0 flags: 0x1fffc0000008100(slab|head) raw: 01fffc0000008100 ffff8880a93320c0 0000000000000000 0000000100000003 raw: ffffea0002256d20 ffffea0001d91020 ffff8880aa800c40 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff8880a9332000: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff8880a9332080: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb >ffff8880a9332100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff8880a9332180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff8880a9332200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================