Fix off-by-one in generic ffz
authorJens Axboe <jens.axboe@oracle.com>
Mon, 2 Jun 2008 07:41:29 +0000 (09:41 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Mon, 2 Jun 2008 07:41:29 +0000 (09:41 +0200)
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
lib/ffz.h

index 7fc7d45..4324f5a 100644 (file)
--- a/lib/ffz.h
+++ b/lib/ffz.h
@@ -3,7 +3,7 @@
 
 static inline int __ffs(int word)
 {
-       int r = 0;
+       int r = 1;
 
        if (!(word & 0xffff)) {
                word >>= 16;
@@ -31,7 +31,7 @@ static inline int __ffs(int word)
 
 static inline int ffz(unsigned int bitmask)
 {
-       return ffs(~bitmask);
+       return ffs(~bitmask) - 1;
 }
 
 #endif