diff options
Diffstat (limited to 'include/asm-i386/bitops.h')
-rw-r--r-- | include/asm-i386/bitops.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/include/asm-i386/bitops.h b/include/asm-i386/bitops.h index 1caee1039363..ddf1739dc7fd 100644 --- a/include/asm-i386/bitops.h +++ b/include/asm-i386/bitops.h | |||
@@ -335,14 +335,13 @@ static inline unsigned long __ffs(unsigned long word) | |||
335 | static inline int find_first_bit(const unsigned long *addr, unsigned size) | 335 | static inline int find_first_bit(const unsigned long *addr, unsigned size) |
336 | { | 336 | { |
337 | int x = 0; | 337 | int x = 0; |
338 | do { | 338 | |
339 | if (*addr) | 339 | while (x < size) { |
340 | return __ffs(*addr) + x; | 340 | unsigned long val = *addr++; |
341 | addr++; | 341 | if (val) |
342 | if (x >= size) | 342 | return __ffs(val) + x; |
343 | break; | ||
344 | x += (sizeof(*addr)<<3); | 343 | x += (sizeof(*addr)<<3); |
345 | } while (1); | 344 | } |
346 | return x; | 345 | return x; |
347 | } | 346 | } |
348 | 347 | ||