Commit d6d2a2ab authored by Linus Torvalds's avatar Linus Torvalds
Browse files

x86: fix new find_first_bit()



Some edge problems with the original C rewrite.

Thanks go to Cal Peake, who pinpointed the breakage to the rewrite, and
tested this fixed version.

Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 33ac02aa
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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;
}