]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[tg3] Fix _tg3_flag() for 64-bit builds
authorMichael Brown <mcb30@ipxe.org>
Mon, 2 May 2016 12:20:26 +0000 (13:20 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 2 May 2016 12:25:56 +0000 (13:25 +0100)
Commit 86f96a4 ("[tg3] Remove x86-specific inline assembly")
introduced a regression in _tg3_flag() in 64-bit builds, since any
flags in the upper 32 bits of a 64-bit unsigned long would be
discarded when truncating to a 32-bit int.

Debugged-by: Shane Thompson <shane.thompson@aeontech.com.au>
Tested-by: Shane Thompson <shane.thompson@aeontech.com.au>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/tg3/tg3.h

index d29523a83ec4d2e3f11dcdbc3f4a3e62ab939325..0c3d23bb70eebfabc50445af3f0f19bbd73372d5 100644 (file)
@@ -3324,7 +3324,7 @@ static inline int _tg3_flag(enum TG3_FLAGS flag, unsigned long *bits)
 {
        unsigned int index = ( flag / ( 8 * sizeof ( *bits ) ) );
        unsigned int bit = ( flag % ( 8 * sizeof ( *bits ) ) );
-       return ( bits[index] & ( 1UL << bit ) );
+       return ( !! ( bits[index] & ( 1UL << bit ) ) );
 }
 
 static inline void _tg3_flag_set(enum TG3_FLAGS flag, unsigned long *bits)