aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asm-i386/bitops.h13
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)
335static inline int find_first_bit(const unsigned long *addr, unsigned size) 335static 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