ath: fix build break with ATH_DBG_WARN_ON_ONCE
authorJohn W. Linville <linville@tuxdriver.com>
Thu, 9 Dec 2010 14:08:47 +0000 (09:08 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 9 Dec 2010 14:42:10 +0000 (09:42 -0500)
Description by Hauke:

"If CONFIG_ATH_DEBUG=y is set ATH_DBG_WARN_ON_ONCE uses WARN_ON_ONCE and
returns something, but if CONFIG_ATH_DEBUG is not set it does not return
anything. Now ATH_DBG_WARN_ON_ONCE is used in the boolean expression in
an if case and is not returning anything and causes a compile error.

  CC [M]  /drivers/net/wireless/ath/ath9k/main.o
/drivers/net/wireless/ath/ath9k/main.c: In function ‘ath_isr’:
/drivers/net/wireless/ath/ath9k/main.c:769: error: expected expression
before ‘do’
make[5]: *** [/drivers/net/wireless/ath/ath9k/main.o] Error 1
make[4]: *** [/drivers/net/wireless/ath/ath9k] Error 2"

Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath.h

index 3eb95e268f03798f07ce7c462888aa81e7b29d5c..e43210c8585c20e14e8ec91d1923e2081d0a9769 100644 (file)
@@ -272,7 +272,10 @@ ath_dbg(struct ath_common *common, enum ATH_DEBUG dbg_mask,
        return 0;
 }
 #define ATH_DBG_WARN(foo, arg...) do {} while (0)
-#define ATH_DBG_WARN_ON_ONCE(foo) do {} while (0)
+#define ATH_DBG_WARN_ON_ONCE(foo) ({                           \
+       int __ret_warn_once = !!(foo);                          \
+       unlikely(__ret_warn_once);                              \
+})
 
 #endif /* CONFIG_ATH_DEBUG */