Re: [syzbot] [syzbot] [bcachefs?] UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred

From: syzbot
Date: Sun May 05 2024 - 21:04:58 EST


For archival purposes, forwarding an incoming command email to
linux-kernel@xxxxxxxxxxxxxxx.

***

Subject: [syzbot] [bcachefs?] UBSAN: shift-out-of-bounds in rewrite_old_nodes_pred
Author: lizhi.xu@xxxxxxxxxxxxx

#syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7367539ad4b0

diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c
index bf68ea49447b..1768d46980e9 100644
--- a/fs/bcachefs/move.c
+++ b/fs/bcachefs/move.c
@@ -983,7 +983,7 @@ static bool bformat_needs_redo(struct bkey_format *f)
if ((f->bits_per_field[i] == unpacked_bits) && field_offset)
return true;

- if (((field_offset + ((1ULL << f->bits_per_field[i]) - 1)) &
+ if (((field_offset + (1ULL << (f->bits_per_field[i] - 1))) &
unpacked_mask) <
field_offset)
return true;