Subject: Re: [PATCH -next] sched/wait: fix __wait_event_interruptible_lock_irq_timeout()

From: Peter Zijlstra <[email-masked]>
Date: Thu, 31 Oct 2013 15:41:23 +0100

On Thu, Oct 31, 2013 at 12:48:14PM +0100, Heiko Carstens wrote:
> __wait_event_interruptible_lock_irq_timeout() needs the timeout parameter
> passed instead of "ret".
> This magically compiled since the only user has a local ret variable.
> Luckily we got a build warning:
> 
>   CC      drivers/s390/scsi/zfcp_qdio.o
> drivers/s390/scsi/zfcp_qdio.c: In function 'zfcp_qdio_sbal_get':
> include/linux/wait.h:780:15: warning: 'ret' may be used uninitialized
>          __ret = schedule_timeout(__ret);   \
>                ^
> drivers/s390/scsi/zfcp_qdio.c:245:7: note: 'ret' was declared here
>   long ret;
>        ^
> Signed-off-by: Heiko Carstens <[email-masked]>

Urgh, sorry about that..

Acked-by: Peter Zijlstra <[email-masked]>

> ---
>  include/linux/wait.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/wait.h b/include/linux/wait.h
> index fcc968087f05..d3d033ec5313 100644
> --- a/include/linux/wait.h
> +++ b/include/linux/wait.h
> @@ -775,7 +775,7 @@ do {									\
>  #define __wait_event_interruptible_lock_irq_timeout(wq, condition,	\
>  						    lock, timeout)	\
>  	___wait_event(wq, ___wait_cond_timeout(condition),		\
> -		      TASK_INTERRUPTIBLE, 0, ret,			\
> +		      TASK_INTERRUPTIBLE, 0, timeout,			\
>  		      spin_unlock_irq(&lock);				\
>  		      __ret = schedule_timeout(__ret);			\
>  		      spin_lock_irq(&lock));
> -- 
> 1.8.3.4
>