syzbot


UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred

Status: fixed on 2024/06/05 13:52
Subsystems: bcachefs
[Documentation on labels]
Reported-by: syzbot+594427aebfefeebe91c6@syzkaller.appspotmail.com
Fix commit: 0ec5b3b7ccfc bcachefs: Fix shift-by-64 in bformat_needs_redo()
First crash: 126d, last: 125d
Cause bisection: introduced by (bisect log) :
commit 03ef80b469d5d83530ce1ce15be78a40e5300f9b
Author: Kent Overstreet <kent.overstreet@linux.dev>
Date: Sat Sep 23 22:41:51 2023 +0000

  bcachefs: Ignore unknown mount options

Crash: UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred (log)
Repro: C syz .config
  
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [bcachefs?] UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred 1 (5) 2024/05/07 19:11
Last patch testing requests (2)
Created Duration User Patch Repo Result
2024/05/06 11:41 15m eadavis@qq.com patch https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7367539ad4b0 report log
2024/05/06 01:04 11m lizhi.xu@windriver.com patch https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7367539ad4b0 report log

Sample crash report:
bcachefs (loop0): journal_replay... done
bcachefs (loop0): resume_logged_ops... done
bcachefs (loop0): scanning for old btree nodes: min_version 0.24: unwritten_extents
bcachefs (loop0): going read-write
------------[ cut here ]------------
UBSAN: shift-out-of-bounds in fs/bcachefs/move.c:986:31
shift exponent 64 is too large for 64-bit type 'unsigned long long'
CPU: 0 PID: 5081 Comm: syz-executor477 Not tainted 6.9.0-rc6-syzkaller-00234-g7367539ad4b0 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
 ubsan_epilogue lib/ubsan.c:231 [inline]
 __ubsan_handle_shift_out_of_bounds+0x3c8/0x420 lib/ubsan.c:468
 bformat_needs_redo fs/bcachefs/move.c:986 [inline]
 rewrite_old_nodes_pred+0x45e/0x620 fs/bcachefs/move.c:1002
 bch2_move_btree+0x792/0xde0 fs/bcachefs/move.c:886
 bch2_scan_old_btree_nodes+0x14b/0x3c0 fs/bcachefs/move.c:1016
 bch2_fs_recovery+0x534e/0x6390 fs/bcachefs/recovery.c:887
 bch2_fs_start+0x356/0x5b0 fs/bcachefs/super.c:1043
 bch2_fs_open+0xa8d/0xdf0 fs/bcachefs/super.c:2102
 bch2_mount+0x71d/0x1320 fs/bcachefs/fs.c:1903
 legacy_get_tree+0xee/0x190 fs/fs_context.c:662
 vfs_get_tree+0x90/0x2a0 fs/super.c:1779
 do_new_mount+0x2be/0xb40 fs/namespace.c:3352
 do_mount fs/namespace.c:3692 [inline]
 __do_sys_mount fs/namespace.c:3898 [inline]
 __se_sys_mount+0x2d9/0x3c0 fs/namespace.c:3875
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf5/0x240 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fc4970e98fa
Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb a6 e8 5e 04 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fff723ad538 EFLAGS: 00000282 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00007fff723ad540 RCX: 00007fc4970e98fa
RDX: 0000000020011a00 RSI: 0000000020000100 RDI: 00007fff723ad540
RBP: 0000000000000004 R08: 00007fff723ad580 R09: 005f617461646174
R10: 0000000003004081 R11: 0000000000000282 R12: 00007fff723ad580
R13: 0000000000000003 R14: 0000000001000000 R15: 0000000000000001
 </TASK>
---[ end trace ]---

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/05/05 09:28 upstream 7367539ad4b0 610f2a54 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-upstream-fs UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred
2024/05/04 23:02 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 78186bd77b47 610f2a54 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-gce-arm64 UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred
2024/05/04 22:46 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 78186bd77b47 610f2a54 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred
* Struck through repros no longer work on HEAD.