summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-02-02 20:26:24 -0900
committerKent Overstreet <kent.overstreet@gmail.com>2016-10-07 12:35:22 -0800
commitd1c5d6a6eae0ab473ccdd5f2a84232c1e80711e1 (patch)
tree141712dab2a71c2fb457da5ccd283cb8f2a4118c
parent49d2c5143971a4e4e859f9d1c4787a90864040d9 (diff)
bcache: fix bug when nr_key_bits == 0
-rw-r--r--drivers/md/bcache/bkey.c7
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;
}
/*