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~24^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8ed58789fc43343d5a55565b204db40a514c06fc;p=thirdparty%2Fkernel%2Flinux.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 24840aee335c0..795f4fc0bab17 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,