diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:22:53 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:23:40 -0400 |
commit | 026bc9d8b3f0e22bd55be335b0600b8015dcc05d (patch) | |
tree | 10f08755b3b88e6d6e9b51356d0e248cfc717135 | |
parent | 2eb8d864bd1d02404eb076b0e0e1d67a91afde08 (diff) |
bcachefs: Fix bch2_prt_bitflags()
This fixes an infinite loop when there's a set bit at position >= 32.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/printbuf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/bcachefs/printbuf.c b/fs/bcachefs/printbuf.c index de41f9a14492..5e653eb81d54 100644 --- a/fs/bcachefs/printbuf.c +++ b/fs/bcachefs/printbuf.c @@ -415,11 +415,11 @@ void bch2_prt_bitflags(struct printbuf *out, while (list[nr]) nr++; - while (flags && (bit = __ffs(flags)) < nr) { + while (flags && (bit = __ffs64(flags)) < nr) { if (!first) bch2_prt_printf(out, ","); first = false; bch2_prt_printf(out, "%s", list[bit]); - flags ^= 1 << bit; + flags ^= BIT_ULL(bit); } } |