X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fasm-i386%2Fbitops.h;h=ddf1739dc7fd1968954ff0eed7d9053346f1360f;hb=6d1d07e41a1de478a0da3cc14b4a8054ef09931c;hp=1caee1039363e7eb848ea9e2bb34ec4b7a985860;hpb=7b70888a192eff457c2ca0a4ffa04815f5e19734;p=linux-2.6 diff --git a/include/asm-i386/bitops.h b/include/asm-i386/bitops.h index 1caee10393..ddf1739dc7 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) static inline int find_first_bit(const unsigned long *addr, unsigned size) { int x = 0; - do { - if (*addr) - return __ffs(*addr) + x; - addr++; - if (x >= size) - break; + + while (x < size) { + unsigned long val = *addr++; + if (val) + return __ffs(val) + x; x += (sizeof(*addr)<<3); - } while (1); + } return x; }