All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rculist: fix borked __list_for_each_rcu() macro
@ 2010-12-15 22:11 Mariusz Kozlowski
  2010-12-15 23:20 ` Paul E. McKenney
  0 siblings, 1 reply; 8+ messages in thread
From: Mariusz Kozlowski @ 2010-12-15 22:11 UTC (permalink / raw)
  To: Dipankar Sarma; +Cc: Paul E. McKenney, linux-kernel, Mariusz Kozlowski

This restores parentheses blance.

Signed-off-by: Mariusz Kozlowski <mk@lab.zgora.pl>
---
 include/linux/rculist.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/rculist.h b/include/linux/rculist.h
index f31ef61..70d3ba5 100644
--- a/include/linux/rculist.h
+++ b/include/linux/rculist.h
@@ -244,7 +244,7 @@ static inline void list_splice_init_rcu(struct list_head *list,
 #define __list_for_each_rcu(pos, head) \
 	for (pos = rcu_dereference_raw(list_next_rcu(head)); \
 		pos != (head); \
-		pos = rcu_dereference_raw(list_next_rcu((pos)))
+		pos = rcu_dereference_raw(list_next_rcu(pos)))
 
 /**
  * list_for_each_entry_rcu	-	iterate over rcu list of given type
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-15 22:11 [PATCH] rculist: fix borked __list_for_each_rcu() macro Mariusz Kozlowski
@ 2010-12-15 23:20 ` Paul E. McKenney
  2010-12-16  6:02   ` Mariusz Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Paul E. McKenney @ 2010-12-15 23:20 UTC (permalink / raw)
  To: Mariusz Kozlowski; +Cc: Dipankar Sarma, linux-kernel

On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
> This restores parentheses blance.

Good catch, queued!!!

This does not actually appear to be in use anywhere in the kernel any
more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
So, just out of curiosity, how did you find this one?

Hmmm...  Maybe we should just delete __list_for_each_rcu.  ;-)

							Thanx, Paul

> Signed-off-by: Mariusz Kozlowski <mk@lab.zgora.pl>
> ---
>  include/linux/rculist.h |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/rculist.h b/include/linux/rculist.h
> index f31ef61..70d3ba5 100644
> --- a/include/linux/rculist.h
> +++ b/include/linux/rculist.h
> @@ -244,7 +244,7 @@ static inline void list_splice_init_rcu(struct list_head *list,
>  #define __list_for_each_rcu(pos, head) \
>  	for (pos = rcu_dereference_raw(list_next_rcu(head)); \
>  		pos != (head); \
> -		pos = rcu_dereference_raw(list_next_rcu((pos)))
> +		pos = rcu_dereference_raw(list_next_rcu(pos)))
> 
>  /**
>   * list_for_each_entry_rcu	-	iterate over rcu list of given type
> -- 
> 1.7.0.4
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-15 23:20 ` Paul E. McKenney
@ 2010-12-16  6:02   ` Mariusz Kozlowski
  2010-12-16  7:38     ` Américo Wang
  2010-12-16 15:51     ` Paul E. McKenney
  0 siblings, 2 replies; 8+ messages in thread
From: Mariusz Kozlowski @ 2010-12-16  6:02 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: Mariusz Kozlowski, Dipankar Sarma, linux-kernel

On Wed, Dec 15, 2010 at 03:20:05PM -0800, Paul E. McKenney wrote:
> On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
> > This restores parentheses blance.
> 
> Good catch, queued!!!
> 
> This does not actually appear to be in use anywhere in the kernel any
> more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
> So, just out of curiosity, how did you find this one?

Some years ago I wrote a dumb script that walks trees of () and {}.
It catches unbalanced trees. It's dumb enough to fail with #ifdef etc,
but most of the time it does its job. It reaches unreachable code
and unused one too.

> Hmmm...  Maybe we should just delete __list_for_each_rcu.  ;-)
> 
> 							Thanx, Paul
> 
> > Signed-off-by: Mariusz Kozlowski <mk@lab.zgora.pl>
> > ---
> >  include/linux/rculist.h |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> > 
> > diff --git a/include/linux/rculist.h b/include/linux/rculist.h
> > index f31ef61..70d3ba5 100644
> > --- a/include/linux/rculist.h
> > +++ b/include/linux/rculist.h
> > @@ -244,7 +244,7 @@ static inline void list_splice_init_rcu(struct list_head *list,
> >  #define __list_for_each_rcu(pos, head) \
> >  	for (pos = rcu_dereference_raw(list_next_rcu(head)); \
> >  		pos != (head); \
> > -		pos = rcu_dereference_raw(list_next_rcu((pos)))
> > +		pos = rcu_dereference_raw(list_next_rcu(pos)))
> > 
> >  /**
> >   * list_for_each_entry_rcu	-	iterate over rcu list of given type
> > -- 
> > 1.7.0.4
> > 

-- 
Mariusz Kozlowski

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-16  6:02   ` Mariusz Kozlowski
@ 2010-12-16  7:38     ` Américo Wang
  2010-12-16 15:50       ` Paul E. McKenney
  2010-12-16 15:51     ` Paul E. McKenney
  1 sibling, 1 reply; 8+ messages in thread
From: Américo Wang @ 2010-12-16  7:38 UTC (permalink / raw)
  To: Mariusz Kozlowski; +Cc: Paul E. McKenney, Dipankar Sarma, linux-kernel

On Thu, Dec 16, 2010 at 07:02:36AM +0100, Mariusz Kozlowski wrote:
>On Wed, Dec 15, 2010 at 03:20:05PM -0800, Paul E. McKenney wrote:
>> On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
>> > This restores parentheses blance.
>> 
>> Good catch, queued!!!
>> 
>> This does not actually appear to be in use anywhere in the kernel any
>> more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
>> So, just out of curiosity, how did you find this one?
>
>Some years ago I wrote a dumb script that walks trees of () and {}.
>It catches unbalanced trees. It's dumb enough to fail with #ifdef etc,
>but most of the time it does its job. It reaches unreachable code
>and unused one too.
>

gcc will complain about this, however, in this case, it is used.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-16  7:38     ` Américo Wang
@ 2010-12-16 15:50       ` Paul E. McKenney
  2010-12-17 10:10         ` Américo Wang
  0 siblings, 1 reply; 8+ messages in thread
From: Paul E. McKenney @ 2010-12-16 15:50 UTC (permalink / raw)
  To: Américo Wang; +Cc: Mariusz Kozlowski, Dipankar Sarma, linux-kernel

On Thu, Dec 16, 2010 at 03:38:40PM +0800, Américo Wang wrote:
> On Thu, Dec 16, 2010 at 07:02:36AM +0100, Mariusz Kozlowski wrote:
> >On Wed, Dec 15, 2010 at 03:20:05PM -0800, Paul E. McKenney wrote:
> >> On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
> >> > This restores parentheses blance.
> >> 
> >> Good catch, queued!!!
> >> 
> >> This does not actually appear to be in use anywhere in the kernel any
> >> more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
> >> So, just out of curiosity, how did you find this one?
> >
> >Some years ago I wrote a dumb script that walks trees of () and {}.
> >It catches unbalanced trees. It's dumb enough to fail with #ifdef etc,
> >but most of the time it does its job. It reaches unreachable code
> >and unused one too.
> 
> gcc will complain about this, however, in this case, it is used.

Hello, Américo!

I did a "git grep -l __list_for_each_rcu" and its output was only:

	include/linux/rculist.h:#define __list_for_each_rcu(pos, head) \

This was in Linus's tree.  And gcc certainly would have failed if
this macro had been used in any recent build.

It really was used some time back, but it appears to me that those
uses no longer exist.

Or are you saying that you have a patch on its way in that needs
this macro?  If so, please point me at it.

							Thanx, Paul

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-16  6:02   ` Mariusz Kozlowski
  2010-12-16  7:38     ` Américo Wang
@ 2010-12-16 15:51     ` Paul E. McKenney
  1 sibling, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2010-12-16 15:51 UTC (permalink / raw)
  To: Mariusz Kozlowski; +Cc: Dipankar Sarma, linux-kernel

On Thu, Dec 16, 2010 at 07:02:36AM +0100, Mariusz Kozlowski wrote:
> On Wed, Dec 15, 2010 at 03:20:05PM -0800, Paul E. McKenney wrote:
> > On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
> > > This restores parentheses blance.
> > 
> > Good catch, queued!!!
> > 
> > This does not actually appear to be in use anywhere in the kernel any
> > more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
> > So, just out of curiosity, how did you find this one?
> 
> Some years ago I wrote a dumb script that walks trees of () and {}.
> It catches unbalanced trees. It's dumb enough to fail with #ifdef etc,
> but most of the time it does its job. It reaches unreachable code
> and unused one too.

Very cool, and thank you!

							Thanx, Paul

> > Hmmm...  Maybe we should just delete __list_for_each_rcu.  ;-)
> > 
> > 							Thanx, Paul
> > 
> > > Signed-off-by: Mariusz Kozlowski <mk@lab.zgora.pl>
> > > ---
> > >  include/linux/rculist.h |    2 +-
> > >  1 files changed, 1 insertions(+), 1 deletions(-)
> > > 
> > > diff --git a/include/linux/rculist.h b/include/linux/rculist.h
> > > index f31ef61..70d3ba5 100644
> > > --- a/include/linux/rculist.h
> > > +++ b/include/linux/rculist.h
> > > @@ -244,7 +244,7 @@ static inline void list_splice_init_rcu(struct list_head *list,
> > >  #define __list_for_each_rcu(pos, head) \
> > >  	for (pos = rcu_dereference_raw(list_next_rcu(head)); \
> > >  		pos != (head); \
> > > -		pos = rcu_dereference_raw(list_next_rcu((pos)))
> > > +		pos = rcu_dereference_raw(list_next_rcu(pos)))
> > > 
> > >  /**
> > >   * list_for_each_entry_rcu	-	iterate over rcu list of given type
> > > -- 
> > > 1.7.0.4
> > > 
> 
> -- 
> Mariusz Kozlowski

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-16 15:50       ` Paul E. McKenney
@ 2010-12-17 10:10         ` Américo Wang
  2010-12-17 15:54           ` Paul E. McKenney
  0 siblings, 1 reply; 8+ messages in thread
From: Américo Wang @ 2010-12-17 10:10 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: Am??rico Wang, Mariusz Kozlowski, Dipankar Sarma, linux-kernel

On Thu, Dec 16, 2010 at 07:50:54AM -0800, Paul E. McKenney wrote:
>On Thu, Dec 16, 2010 at 03:38:40PM +0800, Américo Wang wrote:
>> On Thu, Dec 16, 2010 at 07:02:36AM +0100, Mariusz Kozlowski wrote:
>> >On Wed, Dec 15, 2010 at 03:20:05PM -0800, Paul E. McKenney wrote:
>> >> On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
>> >> > This restores parentheses blance.
>> >> 
>> >> Good catch, queued!!!
>> >> 
>> >> This does not actually appear to be in use anywhere in the kernel any
>> >> more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
>> >> So, just out of curiosity, how did you find this one?
>> >
>> >Some years ago I wrote a dumb script that walks trees of () and {}.
>> >It catches unbalanced trees. It's dumb enough to fail with #ifdef etc,
>> >but most of the time it does its job. It reaches unreachable code
>> >and unused one too.
>> 
>> gcc will complain about this, however, in this case, it is used.
>
>Hello, Américo!
>
>I did a "git grep -l __list_for_each_rcu" and its output was only:
>
>	include/linux/rculist.h:#define __list_for_each_rcu(pos, head) \
>
>This was in Linus's tree.  And gcc certainly would have failed if
>this macro had been used in any recent build.
>

Yeah, my bad, actually I meant to say "unused"... :-(
Sorry for confusing!

My point is that gcc should do this basic lexical check, no need
to invent another tool. :)

Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] rculist: fix borked __list_for_each_rcu() macro
  2010-12-17 10:10         ` Américo Wang
@ 2010-12-17 15:54           ` Paul E. McKenney
  0 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2010-12-17 15:54 UTC (permalink / raw)
  To: Américo Wang; +Cc: Mariusz Kozlowski, Dipankar Sarma, linux-kernel

On Fri, Dec 17, 2010 at 06:10:39PM +0800, Américo Wang wrote:
> On Thu, Dec 16, 2010 at 07:50:54AM -0800, Paul E. McKenney wrote:
> >On Thu, Dec 16, 2010 at 03:38:40PM +0800, Américo Wang wrote:
> >> On Thu, Dec 16, 2010 at 07:02:36AM +0100, Mariusz Kozlowski wrote:
> >> >On Wed, Dec 15, 2010 at 03:20:05PM -0800, Paul E. McKenney wrote:
> >> >> On Wed, Dec 15, 2010 at 11:11:12PM +0100, Mariusz Kozlowski wrote:
> >> >> > This restores parentheses blance.
> >> >> 
> >> >> Good catch, queued!!!
> >> >> 
> >> >> This does not actually appear to be in use anywhere in the kernel any
> >> >> more, so I queued this for 2.6.38 rather than in the 2.6.37 urgent queue.
> >> >> So, just out of curiosity, how did you find this one?
> >> >
> >> >Some years ago I wrote a dumb script that walks trees of () and {}.
> >> >It catches unbalanced trees. It's dumb enough to fail with #ifdef etc,
> >> >but most of the time it does its job. It reaches unreachable code
> >> >and unused one too.
> >> 
> >> gcc will complain about this, however, in this case, it is used.
> >
> >Hello, Américo!
> >
> >I did a "git grep -l __list_for_each_rcu" and its output was only:
> >
> >	include/linux/rculist.h:#define __list_for_each_rcu(pos, head) \
> >
> >This was in Linus's tree.  And gcc certainly would have failed if
> >this macro had been used in any recent build.
> 
> Yeah, my bad, actually I meant to say "unused"... :-(
> Sorry for confusing!

No problem!

> My point is that gcc should do this basic lexical check, no need
> to invent another tool. :)

As an off-by-default warning, this could make a lot of sense, especially
for projects like the Linux kernel that are relatively disciplined in
their use of cpp macros.  Though I am not sure that the recent macros
in the "perf" code would pass such a check.  ;-)

							Thanx, Paul

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-12-17 15:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-15 22:11 [PATCH] rculist: fix borked __list_for_each_rcu() macro Mariusz Kozlowski
2010-12-15 23:20 ` Paul E. McKenney
2010-12-16  6:02   ` Mariusz Kozlowski
2010-12-16  7:38     ` Américo Wang
2010-12-16 15:50       ` Paul E. McKenney
2010-12-17 10:10         ` Américo Wang
2010-12-17 15:54           ` Paul E. McKenney
2010-12-16 15:51     ` Paul E. McKenney

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.