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