syzbot


KASAN: use-after-free Read in locks_remove_flock

Status: closed as dup on 2018/11/16 20:42
Subsystems: fs
[Documentation on labels]
Reported-by: syzbot+34a98afb89842107f03f@syzkaller.appspotmail.com
First crash: 1997d, last: 1996d
Duplicate of
Title Repro Cause bisect Fix bisect Count Last Reported
KASAN: use-after-free Read in locks_delete_block fs syz 4 1968d 1991d
Discussions (1)
Title Replies (including bot) Last reply
KASAN: use-after-free Read in locks_remove_flock 1 (2) 2018/11/16 20:41

Sample crash report:
kasan: CONFIG_KASAN_INLINE enabled
==================================================================
BUG: KASAN: use-after-free in locks_remove_flock+0x33c/0x350 fs/locks.c:2567
Read of size 8 at addr ffff8801d8730d50 by task syz-executor3/7285

CPU: 1 PID: 7285 Comm: syz-executor3 Not tainted 4.20.0-rc1-next-20181107+ #107
kernel msg: ebtables bug: please report to author: Total nentries is wrong
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x244/0x39d lib/dump_stack.c:113
kernel msg: ebtables bug: please report to author: Total nentries is wrong
kasan: GPF could be caused by NULL-ptr deref or user memory access
 print_address_description.cold.7+0x9/0x1ff mm/kasan/report.c:256
 kasan_report_error mm/kasan/report.c:354 [inline]
 kasan_report.cold.8+0x242/0x309 mm/kasan/report.c:412
 __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
 locks_remove_flock+0x33c/0x350 fs/locks.c:2567
general protection fault: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 7284 Comm: syz-executor3 Not tainted 4.20.0-rc1-next-20181107+ #107
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:locks_remove_flock+0x216/0x350 fs/locks.c:2567
Code: 00 0f 85 3a 01 00 00 48 8b 5b 98 48 85 db 74 3a e8 1f 41 92 ff 48 8d 7b 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 17 01 00 00 48 8b 5b 08 48 85 db 74 0d e8 f2 40
RSP: 0018:ffff88018c797880 EFLAGS: 00010202
RAX: dffffc0000000000 RBX: 0000000041b58ab3 RCX: ffffffff81ed555d
RDX: 000000000836b157 RSI: ffffffff81ed5c71 RDI: 0000000041b58abb
 locks_remove_file+0x148/0x5c0 fs/locks.c:2607
RBP: ffff88018c797a60 R08: ffff880187460180 R09: ffffed003b5e5b67
R10: ffffed003b5e5b67 R11: ffff8801daf2db3b R12: ffff8801d1fc6000
R13: ffff88018c7978f8 R14: 1ffff100318f2f13 R15: dffffc0000000000
FS:  0000000002141940(0000) GS:ffff8801dae00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000017b4ac0 CR3: 00000001b7b3a000 CR4: 00000000001406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
 __fput+0x2f0/0xa70 fs/file_table.c:271
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 ____fput+0x15/0x20 fs/file_table.c:312
 task_work_run+0x1e8/0x2a0 kernel/task_work.c:113
 locks_remove_file+0x148/0x5c0 fs/locks.c:2607
 tracehook_notify_resume include/linux/tracehook.h:188 [inline]
 exit_to_usermode_loop+0x318/0x380 arch/x86/entry/common.c:166
 prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
 syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
 do_syscall_64+0x6be/0x820 arch/x86/entry/common.c:293
 __fput+0x2f0/0xa70 fs/file_table.c:271
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x457569
 ____fput+0x15/0x20 fs/file_table.c:312
Code: fd b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 cb b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00
 task_work_run+0x1e8/0x2a0 kernel/task_work.c:113
RSP: 002b:00007f75dd781c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000049
RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000457569
RDX: 0000000000000000 RSI: 0000000000000002 RDI: 0000000000000003
RBP: 000000000072bf00 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007f75dd7826d4
 tracehook_notify_resume include/linux/tracehook.h:188 [inline]
 exit_to_usermode_loop+0x318/0x380 arch/x86/entry/common.c:166
R13: 00000000004bdd9e R14: 00000000004ccdb8 R15: 00000000ffffffff

Allocated by task 7285:
 prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
 syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
 do_syscall_64+0x6be/0x820 arch/x86/entry/common.c:293
 save_stack+0x43/0xd0 mm/kasan/kasan.c:448
 set_track mm/kasan/kasan.c:460 [inline]
 kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:553
 kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:490
 kmem_cache_alloc+0x12e/0x730 mm/slab.c:3554
 kmem_cache_zalloc include/linux/slab.h:731 [inline]
 locks_alloc_lock+0x9e/0x300 fs/locks.c:304
 flock_make_lock+0x22c/0x2a0 fs/locks.c:438
 __do_sys_flock fs/locks.c:2057 [inline]
 __se_sys_flock fs/locks.c:2038 [inline]
 __x64_sys_flock+0x12b/0x350 fs/locks.c:2038
 do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x411021

Code: 75 14 b8 03 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 34 19 00 00 c3 48 83 ec 08 e8 0a fc ff ff 48 89 04 24 b8 03 00 00 00 0f 05 <48> 8b 3c 24 48 89 c2 e8 53 fc ff ff 48 89 d0 48 83 c4 08 48 3d 01
Freed by task 7285:
RSP: 002b:00007ffc87b7e8a0 EFLAGS: 00000293 ORIG_RAX: 0000000000000003
 save_stack+0x43/0xd0 mm/kasan/kasan.c:448
RAX: 0000000000000000 RBX: 0000000000000005 RCX: 0000000000411021
 set_track mm/kasan/kasan.c:460 [inline]
 __kasan_slab_free+0x102/0x150 mm/kasan/kasan.c:521
RDX: 0000000000000000 RSI: 00000000007301c8 RDI: 0000000000000004
 kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528
RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
 __cache_free mm/slab.c:3498 [inline]
 kmem_cache_free+0x83/0x290 mm/slab.c:3760
R10: 00007ffc87b7e7c0 R11: 0000000000000293 R12: 0000000000000000
 locks_free_lock+0x295/0x420 fs/locks.c:341
R13: 0000000000000001 R14: 0000000000000005 R15: 0000000000000003
 __do_sys_flock fs/locks.c:2078 [inline]
 __se_sys_flock fs/locks.c:2038 [inline]
 __x64_sys_flock+0x289/0x350 fs/locks.c:2038
Modules linked in:
 do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
---[ end trace e63a15928f12d175 ]---
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

The buggy address belongs to the object at ffff8801d8730d10
 which belongs to the cache file_lock_cache of size 264
The buggy address is located 64 bytes inside of
 264-byte region [ffff8801d8730d10, ffff8801d8730e18)
RIP: 0010:locks_remove_flock+0x216/0x350 fs/locks.c:2567
The buggy address belongs to the page:
page:ffffea000761cc00 count:1 mapcount:0 mapping:ffff8801d9bf1900 index:0x0
Code: 00 0f 85 3a 01 00 00 48 8b 5b 98 48 85 db 74 3a e8 1f 41 92 ff 48 8d 7b 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 17 01 00 00 48 8b 5b 08 48 85 db 74 0d e8 f2 40
flags: 0x2fffc0000000200(slab)
raw: 02fffc0000000200 ffff8801d9bf5a48 ffffea0006dc5d88 ffff8801d9bf1900
raw: 0000000000000000 ffff8801d8730040 000000010000000c 0000000000000000
RSP: 0018:ffff88018c797880 EFLAGS: 00010202
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff8801d8730c00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8801d8730c80: fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc fc
>ffff8801d8730d00: fc fc fb fb fb fb fb fb fb fb fb fb fb fb fb fb
RAX: dffffc0000000000 RBX: 0000000041b58ab3 RCX: ffffffff81ed555d
                                                 ^
 ffff8801d8730d80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8801d8730e00: fb fb fb fc fc fc fc fc fc fc fc fb fb fb fb fb
RDX: 000000000836b157 RSI: ffffffff81ed5c71 RDI: 0000000041b58abb
==================================================================

Crashes (9):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2018/11/08 04:05 linux-next d881de30d29e e85d2a61 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 05:47 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 05:42 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 05:18 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 05:11 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 04:37 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 04:18 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 03:55 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
2018/11/07 03:46 linux-next d881de30d29e 8bd6bd63 .config console log report ci-upstream-linux-next-kasan-gce-root
* Struck through repros no longer work on HEAD.