All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Randy Dunlap <rdunlap@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	mm-commits@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-next@vger.kernel.org
Subject: Re: mmotm 2013-06-27-16-36 uploaded (wait event common)
Date: Fri, 28 Jun 2013 19:15:45 +0200	[thread overview]
Message-ID: <20130628171545.GA28672@redhat.com> (raw)
In-Reply-To: <20130628153828.GA24371@redhat.com>

On 06/28, Oleg Nesterov wrote:
>
> On 06/28, Stephen Rothwell wrote:
> >
> > On Thu, 27 Jun 2013 23:06:43 -0700 Randy Dunlap <rdunlap@infradead.org> wrote:
> > >
> > > >> My builds are littered with hundreds of warnings like this one:
> > > >>
> > > >> drivers/tty/tty_ioctl.c:220:6: warning: the omitted middle operand in ?: will always be 'true', suggest explicit middle operand [-Wparentheses]
> > > >>
> > > >> I guess due to this line from wait_event_common():
> > > >>
> > > >> +		__ret = __wait_no_timeout(tout) ?: (tout) ?: 1;
> > > >>
> > I added the following to linux-next today:
> > (sorry Randy, I forgot the Reported-by:, Andrew please add)
> >
> > From: Stephen Rothwell <sfr@canb.auug.org.au>
> > Date: Fri, 28 Jun 2013 16:52:58 +1000
> > Subject: [PATCH] fix warnings from ?: operator in wait.h
>
> Argh. This patch strikes again.
>
> Thanks, and sorry. And please help!
>
> I am not sure I understand. Since when gcc dislikes '?:' ?
> /bin/grep shows a lot of users of 'X ?: Y' shortcut?

OK, I have found the machine with the newer gcc.

	#define test_1(tout) (!tout ?: 1)

	int func_1(long timeout)
	{
		return test_1(timeout);
	}

	#define test_2(tout) (tout ?: 1)

	int func_2(long timeout)
	{
		return test_2(timeout);
	}

test_1() triggers the same warning, test_2() doesn't. So it doesn't
like "computed-boolean ?: long".

> > Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> > ---
> >  include/linux/wait.h | 18 ++++++++++++++----
> >  1 file changed, 14 insertions(+), 4 deletions(-)
> > 
> > diff --git a/include/linux/wait.h b/include/linux/wait.h
> > index 1c08a6c..f3b793d 100644
> > --- a/include/linux/wait.h
> > +++ b/include/linux/wait.h
> > @@ -197,7 +197,12 @@ wait_queue_head_t *bit_waitqueue(void *, int);
> >  	for (;;) {							\
> >  		__ret = prepare_to_wait_event(&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;						\
> >  		}							\
> >  									\
> > @@ -218,9 +223,14 @@ wait_queue_head_t *bit_waitqueue(void *, int);
> >  #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;								\
> >  })

Thanks. This should fix the isssue.

I'll try to send the cleanup patch later, this doesn't look very nice...

Oleg.


WARNING: multiple messages have this Message-ID (diff)
From: Oleg Nesterov <oleg@redhat.com>
To: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Randy Dunlap <rdunlap@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	mm-commits@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-next@vger.kernel.org
Subject: Re: mmotm 2013-06-27-16-36 uploaded (wait event common)
Date: Fri, 28 Jun 2013 19:15:45 +0200	[thread overview]
Message-ID: <20130628171545.GA28672@redhat.com> (raw)
In-Reply-To: <20130628153828.GA24371@redhat.com>

On 06/28, Oleg Nesterov wrote:
>
> On 06/28, Stephen Rothwell wrote:
> >
> > On Thu, 27 Jun 2013 23:06:43 -0700 Randy Dunlap <rdunlap@infradead.org> wrote:
> > >
> > > >> My builds are littered with hundreds of warnings like this one:
> > > >>
> > > >> drivers/tty/tty_ioctl.c:220:6: warning: the omitted middle operand in ?: will always be 'true', suggest explicit middle operand [-Wparentheses]
> > > >>
> > > >> I guess due to this line from wait_event_common():
> > > >>
> > > >> +		__ret = __wait_no_timeout(tout) ?: (tout) ?: 1;
> > > >>
> > I added the following to linux-next today:
> > (sorry Randy, I forgot the Reported-by:, Andrew please add)
> >
> > From: Stephen Rothwell <sfr@canb.auug.org.au>
> > Date: Fri, 28 Jun 2013 16:52:58 +1000
> > Subject: [PATCH] fix warnings from ?: operator in wait.h
>
> Argh. This patch strikes again.
>
> Thanks, and sorry. And please help!
>
> I am not sure I understand. Since when gcc dislikes '?:' ?
> /bin/grep shows a lot of users of 'X ?: Y' shortcut?

OK, I have found the machine with the newer gcc.

	#define test_1(tout) (!tout ?: 1)

	int func_1(long timeout)
	{
		return test_1(timeout);
	}

	#define test_2(tout) (tout ?: 1)

	int func_2(long timeout)
	{
		return test_2(timeout);
	}

test_1() triggers the same warning, test_2() doesn't. So it doesn't
like "computed-boolean ?: long".

> > Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> > ---
> >  include/linux/wait.h | 18 ++++++++++++++----
> >  1 file changed, 14 insertions(+), 4 deletions(-)
> > 
> > diff --git a/include/linux/wait.h b/include/linux/wait.h
> > index 1c08a6c..f3b793d 100644
> > --- a/include/linux/wait.h
> > +++ b/include/linux/wait.h
> > @@ -197,7 +197,12 @@ wait_queue_head_t *bit_waitqueue(void *, int);
> >  	for (;;) {							\
> >  		__ret = prepare_to_wait_event(&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;						\
> >  		}							\
> >  									\
> > @@ -218,9 +223,14 @@ wait_queue_head_t *bit_waitqueue(void *, int);
> >  #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;								\
> >  })

Thanks. This should fix the isssue.

I'll try to send the cleanup patch later, this doesn't look very nice...

Oleg.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2013-06-28 17:20 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-27 23:37 mmotm 2013-06-27-16-36 uploaded akpm
2013-06-27 23:37 ` akpm
2013-06-27 23:37 ` akpm
2013-06-27 23:57 ` Stephen Rothwell
2013-06-28  0:32   ` Andrew Morton
2013-06-28  0:32     ` Andrew Morton
2013-06-28  1:09     ` Stephen Rothwell
2013-06-28  0:32   ` Andrew Morton
2013-06-28  5:30 ` mmotm 2013-06-27-16-36 uploaded (wait event common) Randy Dunlap
2013-06-28  5:30   ` Randy Dunlap
2013-06-28  5:51   ` Andrew Morton
2013-06-28  5:51     ` Andrew Morton
2013-06-28  6:06     ` Randy Dunlap
2013-06-28  6:06       ` Randy Dunlap
2013-06-28  6:56       ` Stephen Rothwell
2013-06-28 15:38         ` Oleg Nesterov
2013-06-28 15:38           ` Oleg Nesterov
2013-06-28 17:15           ` Oleg Nesterov [this message]
2013-06-28 17:15             ` Oleg Nesterov
2013-06-29 14:00   ` Valdis.Kletnieks
2013-06-30 18:28     ` Oleg Nesterov
2013-06-30 18:28       ` Oleg Nesterov
2013-06-28  5:57 ` mmotm 2013-06-27-16-36 uploaded (v4l2 without I2C) Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130628171545.GA28672@redhat.com \
    --to=oleg@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mm-commits@vger.kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=sfr@canb.auug.org.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.