diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2016-02-02 20:26:24 -0900 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2016-10-07 12:35:22 -0800 |
commit | d1c5d6a6eae0ab473ccdd5f2a84232c1e80711e1 (patch) | |
tree | 141712dab2a71c2fb457da5ccd283cb8f2a4118c | |
parent | 49d2c5143971a4e4e859f9d1c4787a90864040d9 (diff) |
bcache: fix bug when nr_key_bits == 0
-rw-r--r-- | drivers/md/bcache/bkey.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/md/bcache/bkey.c b/drivers/md/bcache/bkey.c index 53d21ebf667d..8f9b7828445e 100644 --- a/drivers/md/bcache/bkey.c +++ b/drivers/md/bcache/bkey.c @@ -664,7 +664,7 @@ unsigned bkey_greatest_differing_bit(const struct bkey_format *format, l_v = *l & (~0ULL >> high_bit_offset); r_v = *r & (~0ULL >> high_bit_offset); - while (1) { + while (nr_key_bits) { if (nr_key_bits < word_bits) { l_v >>= word_bits - nr_key_bits; r_v >>= word_bits - nr_key_bits; @@ -676,9 +676,6 @@ unsigned bkey_greatest_differing_bit(const struct bkey_format *format, if (l_v != r_v) return fls64(l_v ^ r_v) - 1 + nr_key_bits; - if (!nr_key_bits) - return 0; - l = next_word(l); r = next_word(r); @@ -686,6 +683,8 @@ unsigned bkey_greatest_differing_bit(const struct bkey_format *format, r_v = *r; word_bits = 64; } + + return 0; } /* |