diff options
author | Rasmus Villemoes <linux@rasmusvillemoes.dk> | 2014-08-07 01:10:20 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-07 03:01:27 +0200 |
commit | c5341ec8904ebff50f365a2626da6ab525d63b9e (patch) | |
tree | 0acb8e7d30405e97097d226a8f4d558470e408fe /include/linux/bitmap.h | |
parent | lib: bitmap: micro-optimize bitmap_allocate_region (diff) | |
download | linux-c5341ec8904ebff50f365a2626da6ab525d63b9e.tar.xz linux-c5341ec8904ebff50f365a2626da6ab525d63b9e.zip |
lib: bitmap: add missing mask in bitmap_shift_right
There is no guarantee that *src does not contain garbage bits outside
the lower nbits, so we need to mask it before the shift-and-assign.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to '')
-rw-r--r-- | include/linux/bitmap.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 210037833356..75df61d9ecfb 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -284,7 +284,7 @@ static inline void bitmap_shift_right(unsigned long *dst, const unsigned long *src, int n, int nbits) { if (small_const_nbits(nbits)) - *dst = *src >> n; + *dst = (*src & BITMAP_LAST_WORD_MASK(nbits)) >> n; else __bitmap_shift_right(dst, src, n, nbits); } |