* [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 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
* 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
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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox