From: Andrew Morton <akpm@linux-foundation.org>
Subject: wait-introduce-wait_event_commonwq-condition-state-timeout-fix

faix warnings, avoid eye-glazing use of gcc ?: extension

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Julian Anastasov <ja@ssi.bg>
Cc: Lukas Czerner <lczerner@redhat.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Samuel Ortiz <samuel@sortiz.org>
Cc: Simon Horman <horms@verge.net.au>
Cc: Tejun Heo <tj@kernel.org>
Cc: Wensong Zhang <wensong@linux-vs.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 include/linux/wait.h |   19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff -puN include/linux/wait.h~wait-introduce-wait_event_commonwq-condition-state-timeout-fix include/linux/wait.h
--- a/include/linux/wait.h~wait-introduce-wait_event_commonwq-condition-state-timeout-fix
+++ a/include/linux/wait.h
@@ -196,7 +196,12 @@ wait_queue_head_t *bit_waitqueue(void *,
 	for (;;) {							\
 		prepare_to_wait(&wq, &__wait, state);			\
 		if (condition) {					\
-			__ret = __wait_no_timeout(tout) ?: __tout ?: 1;	\
+			__ret = __wait_no_timeout(tout);		\
+			if (!__ret) {					\
+				__ret = __tout;				\
+				if (!__ret)				\
+					__ret = 1;			\
+			}						\
 			break;						\
 		}							\
 									\
@@ -219,10 +224,16 @@ wait_queue_head_t *bit_waitqueue(void *,
 #define wait_event_common(wq, condition, state, tout)			\
 ({									\
 	long __ret;							\
-	if (condition)							\
-		__ret = __wait_no_timeout(tout) ?: (tout) ?: 1;		\
-	else								\
+	if (condition) {						\
+		__ret = __wait_no_timeout(tout);			\
+		if (!__ret) {						\
+			__ret = tout;					\
+			if (!__ret)					\
+				__ret = 1;				\
+		}							\
+	} else {							\
 		__ret = __wait_event_common(wq, condition, state, tout);\
+	}								\
 	__ret;								\
 })
 
_
