syzbot


general protection fault in __fget_files (2)

Status: fixed on 2024/02/21 18:23
Subsystems: reiserfs
[Documentation on labels]
Reported-by: syzbot+63cebbb27f598a7f901b@syzkaller.appspotmail.com
Fix commit: 6f861765464f fs: Block writes to mounted block devices
First crash: 121d, last: 121d
Cause bisection: introduced by (bisect log) :
commit 13d257503c0930010ef9eed78b689cec417ab741
Author: Shreyansh Chouhan <chouhan.shreyansh630@gmail.com>
Date: Fri Jul 9 15:29:29 2021 +0000

  reiserfs: check directory items on read from disk

Crash: invalid opcode in add_timer (log)
Repro: C syz .config
  
Fix bisection: fixed by (bisect log) :
commit 6f861765464f43a71462d52026fbddfc858239a5
Author: Jan Kara <jack@suse.cz>
Date: Wed Nov 1 17:43:10 2023 +0000

  fs: Block writes to mounted block devices

  
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [reiserfs?] general protection fault in __fget_files (2) 2 (5) 2024/02/15 09:30
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream general protection fault in __fget_files fs io-uring syz done 2 1271d 1270d 0/26 auto-obsoleted due to no activity on 2023/01/05 07:02
upstream KMSAN: uninit-value in __tipc_nl_bearer_enable tipc C 1288 428d 1956d 22/26 fixed on 2023/02/24 13:50
Last patch testing requests (2)
Created Duration User Patch Repo Result
2024/01/12 05:14 2h22m retest repro upstream OK log
2024/01/05 13:14 14m eadavis@qq.com patch https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git f5837722ffec report log

Sample crash report:
general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
CPU: 0 PID: 5053 Comm: sshd Not tainted 6.7.0-rc7-syzkaller-00016-gf5837722ffec #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023
RIP: 0010:__fget_files_rcu fs/file.c:963 [inline]
RIP: 0010:__fget_files+0x96/0x340 fs/file.c:1022
Code: 89 f8 48 c1 e8 03 4c 01 f0 48 89 04 24 e8 62 86 92 ff 48 8b 04 24 80 38 00 0f 85 7f 02 00 00 4d 8b 65 58 4c 89 e0 48 c1 e8 03 <42> 0f b6 04 30 84 c0 74 08 3c 03 0f 8e 70 02 00 00 41 8b 1c 24 89
RSP: 0018:ffffc9000331f8a0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000001 RCX: ffffffff81f3df8d
RDX: ffff88802a5e2180 RSI: ffffffff81f3de1e RDI: 0000000000000001
RBP: 0000000000000004 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
R13: ffff88807300f040 R14: dffffc0000000000 R15: ffff88807300f098
FS:  00007f9d8d382800(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005592de0c8df8 CR3: 000000001f753000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 __fget fs/file.c:1030 [inline]
 __fget_light+0xd0/0x260 fs/file.c:1137
 fdget include/linux/file.h:64 [inline]
 do_pollfd fs/select.c:866 [inline]
 do_poll fs/select.c:921 [inline]
 do_sys_poll+0x469/0xde0 fs/select.c:1015
 __do_sys_ppoll fs/select.c:1121 [inline]
 __se_sys_ppoll fs/select.c:1101 [inline]
 __x64_sys_ppoll+0x256/0x2d0 fs/select.c:1101
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0x40/0x110 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x63/0x6b
RIP: 0033:0x7f9d8cf19ad5
Code: 85 d2 74 0d 0f 10 02 48 8d 54 24 20 0f 11 44 24 20 64 8b 04 25 18 00 00 00 85 c0 75 27 41 b8 08 00 00 00 b8 0f 01 00 00 0f 05 <48> 3d 00 f0 ff ff 76 75 48 8b 15 24 73 0d 00 f7 d8 64 89 02 48 83
RSP: 002b:00007ffeaa4272d0 EFLAGS: 00000246 ORIG_RAX: 000000000000010f
RAX: ffffffffffffffda RBX: 00000000000668a0 RCX: 00007f9d8cf19ad5
RDX: 00007ffeaa4272f0 RSI: 0000000000000004 RDI: 000055c03123eaa0
RBP: 000055c03123f260 R08: 0000000000000008 R09: 0000000000000000
R10: 00007ffeaa4273d8 R11: 0000000000000246 R12: 000055c02f66caa4
R13: 0000000000000001 R14: 000055c02f66d3e8 R15: 00007ffeaa427358
 </TASK>
Modules linked in:
----------------
Code disassembly (best guess):
   0:	89 f8                	mov    %edi,%eax
   2:	48 c1 e8 03          	shr    $0x3,%rax
   6:	4c 01 f0             	add    %r14,%rax
   9:	48 89 04 24          	mov    %rax,(%rsp)
   d:	e8 62 86 92 ff       	call   0xff928674
  12:	48 8b 04 24          	mov    (%rsp),%rax
  16:	80 38 00             	cmpb   $0x0,(%rax)
  19:	0f 85 7f 02 00 00    	jne    0x29e
  1f:	4d 8b 65 58          	mov    0x58(%r13),%r12
  23:	4c 89 e0             	mov    %r12,%rax
  26:	48 c1 e8 03          	shr    $0x3,%rax
* 2a:	42 0f b6 04 30       	movzbl (%rax,%r14,1),%eax <-- trapping instruction
  2f:	84 c0                	test   %al,%al
  31:	74 08                	je     0x3b
  33:	3c 03                	cmp    $0x3,%al
  35:	0f 8e 70 02 00 00    	jle    0x2ab
  3b:	41 8b 1c 24          	mov    (%r12),%ebx
  3f:	89                   	.byte 0x89

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/12/28 09:49 upstream f5837722ffec fb427a07 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-selinux-root general protection fault in __fget_files
* Struck through repros no longer work on HEAD.