From fe62f3c8312c3747c1a6c375b502cffa65d60f63 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 2 May 2016 13:20:26 +0100 Subject: [PATCH] [tg3] Fix _tg3_flag() for 64-bit builds 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 Tested-by: Shane Thompson Signed-off-by: Michael Brown --- src/drivers/net/tg3/tg3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/net/tg3/tg3.h b/src/drivers/net/tg3/tg3.h index d29523a83..0c3d23bb7 100644 --- a/src/drivers/net/tg3/tg3.h +++ b/src/drivers/net/tg3/tg3.h @@ -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)