From: Kent Overstreet Date: Wed, 3 Jul 2024 15:56:19 +0000 (-0400) Subject: bcachefs: Fix undefined behaviour in eytzinger1_first() X-Git-Tag: v6.10~16^2~11 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=8ed58789fc43343d5a55565b204db40a514c06fc;p=linux-block.git bcachefs: Fix undefined behaviour in eytzinger1_first() Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/eytzinger.h b/fs/bcachefs/eytzinger.h index 24840aee335c..795f4fc0bab1 100644 --- a/fs/bcachefs/eytzinger.h +++ b/fs/bcachefs/eytzinger.h @@ -48,7 +48,7 @@ static inline unsigned eytzinger1_right_child(unsigned i) static inline unsigned eytzinger1_first(unsigned size) { - return rounddown_pow_of_two(size); + return size ? rounddown_pow_of_two(size) : 0; } static inline unsigned eytzinger1_last(unsigned size) @@ -101,7 +101,9 @@ static inline unsigned eytzinger1_prev(unsigned i, unsigned size) static inline unsigned eytzinger1_extra(unsigned size) { - return (size + 1 - rounddown_pow_of_two(size)) << 1; + return size + ? (size + 1 - rounddown_pow_of_two(size)) << 1 + : 0; } static inline unsigned __eytzinger1_to_inorder(unsigned i, unsigned size,