* Re: [PATCH] trace: events: fix error directive in argument list
[not found] ` <20190327115330.04b5b481@gandalf.local.home>
@ 2019-03-29 23:12 ` Luc Van Oostenryck
0 siblings, 0 replies; 5+ messages in thread
From: Luc Van Oostenryck @ 2019-03-29 23:12 UTC (permalink / raw)
To: Steven Rostedt
Cc: Hariprasad Kelam, mingo, roopa, davem, linux-kernel, linux-sparse
On Wed, Mar 27, 2019 at 11:53:30AM -0400, Steven Rostedt wrote:
> On Tue, 26 Mar 2019 01:23:03 +0530
> Hariprasad Kelam <hariprasad.kelam@gmail.com> wrote:
>
> > This patch fixes below spare errors.
> >
> > Sparse error:
> > make C=2 CF=-D__CHECK_ENDIAN__ M=net/core
> > ./include/trace/events/neigh.h:73:1: error: directive in argument list
> > ./include/trace/events/neigh.h:78:1: error: directive in argument list
> > ./include/trace/events/neigh.h:150:1: error: directive in argument list
> > ./include/trace/events/neigh.h:155:1: error: directive in argument list
> >
>
> I have nothing really against these patches, but why is the current
> code considered wrong?
>
> Note, TRACE_EVENTS() are "special macros". They hold structure
> definitions and full code inside the argument list. There should be no
> reason that this is causing a warning.
The problem is that #ifdefs at line 73 & 150 are inside TRACE_EVENT()'s
invocation and this is undefined behaviour. From the standard:
... If there are sequences of preprocessing tokens within the
list of arguments that would otherwise act as preprocessing
directives, the behavior is undefined.
[C90 6.8.3, C99 & C11 6.10.3p11]
GCC can handle it (and sparse too) but yes sparse complains about it.
-- Luc Van Oostenryck
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] trace: events: fix error directive in argument list
[not found] ` <20190329232215.itsvo3jj3lu4gr7k@ltop.local>
@ 2019-03-30 11:07 ` Hariprasad Kelam
2019-03-30 12:01 ` Luc Van Oostenryck
0 siblings, 1 reply; 5+ messages in thread
From: Hariprasad Kelam @ 2019-03-30 11:07 UTC (permalink / raw)
To: Luc Van Oostenryck, Steven Rostedt, mingo, roopa, davem,
linux-kernel, linux-sparse
On Sat, Mar 30, 2019 at 12:22:17AM +0100, Luc Van Oostenryck wrote:
> On Tue, Mar 26, 2019 at 01:23:03AM +0530, Hariprasad Kelam wrote:
> > This patch fixes below spare errors.
> >
> > Sparse error:
> > make C=2 CF=-D__CHECK_ENDIAN__ M=net/core
> > ./include/trace/events/neigh.h:73:1: error: directive in argument list
> > ./include/trace/events/neigh.h:78:1: error: directive in argument list
> > ./include/trace/events/neigh.h:150:1: error: directive in argument list
> > ./include/trace/events/neigh.h:155:1: error: directive in argument list
> >
> > Changes below two lines to signle line to avoid sparse error
> > #if IS_ENABLED(CONFIG_IPV6)
> > if (n->tbl->family == AF_INET6) {
> > to if (IS_ENABLED(CONFIG_IPV6) && n->tbl->family == AF_INET6)
> >
> > and removes reassigning pin6 pointer when IPV6 is enabled
> >
> > Signed-off-by: Hariprasad Kelam <hariprasad.kelam@gmail.com>
> > ---
> > include/trace/events/neigh.h | 19 +++++--------------
> > 1 file changed, 5 insertions(+), 14 deletions(-)
> >
> > diff --git a/include/trace/events/neigh.h b/include/trace/events/neigh.h
> > index 0bdb085..6e310ea 100644
> > --- a/include/trace/events/neigh.h
> > +++ b/include/trace/events/neigh.h
> > @@ -70,15 +70,11 @@ TRACE_EVENT(neigh_update,
> > else
> > *p32 = 0;
> >
> > -#if IS_ENABLED(CONFIG_IPV6)
> > - if (n->tbl->family == AF_INET6) {
> > - pin6 = (struct in6_addr *)__entry->primary_key6;
> > + if (IS_ENABLED(CONFIG_IPV6) && n->tbl->family == AF_INET6)
> > *pin6 = *(struct in6_addr *)n->primary_key;
>
> Why removing the line wheer pin6 is assigned?
> IMO, the patch should be:
> -#if IS_ENABLED(CONFIG_IPV6)
> - if (n->tbl->family == AF_INET6) {
> + if (IS_ENABLED(CONFIG_IPV6) && n->tbl->family == AF_INET6)
> pin6 = (struct in6_addr *)__entry->primary_key6;
> *pin6 = *(struct in6_addr *)n->primary_key;
>
> > @@ -147,15 +143,10 @@ DECLARE_EVENT_CLASS(neigh__update,
> > else
> > *p32 = 0;
> >
> > -#if IS_ENABLED(CONFIG_IPV6)
> > - if (n->tbl->family == AF_INET6) {
> > - pin6 = (struct in6_addr *)__entry->primary_key6;
>
pin6 is already assinged .Assinging pin6 is redudant in if loop
Below is the original code
<code-snippet>
pin6 = (struct in6_addr *)__entry->primary_key6;
p32 = (__be32 *)__entry->primary_key4;
if (n->tbl->family == AF_INET)
*p32 = *(__be32 *)n->primary_key;
else
*p32 = 0;
#if IS_ENABLED(CONFIG_IPV6)
if (n->tbl->family == AF_INET6) {
pin6 = (struct in6_addr *)__entry->primary_key6;
*pin6 = *(struct in6_addr *)n->primary_key;
} else
#endif
{
ipv6_addr_set_v4mapped(*p32, pin6);
}
</code-snippet>
> Same here.
>
> -- Luc Van Oostenryck
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] trace: events: fix error directive in argument list
2019-03-30 11:07 ` Hariprasad Kelam
@ 2019-03-30 12:01 ` Luc Van Oostenryck
2019-03-30 12:40 ` Steven Rostedt
0 siblings, 1 reply; 5+ messages in thread
From: Luc Van Oostenryck @ 2019-03-30 12:01 UTC (permalink / raw)
To: Hariprasad Kelam
Cc: Steven Rostedt, mingo, roopa, davem, linux-kernel, linux-sparse
On Sat, Mar 30, 2019 at 04:37:48PM +0530, Hariprasad Kelam wrote:
> On Sat, Mar 30, 2019 at 12:22:17AM +0100, Luc Van Oostenryck wrote:
> > On Tue, Mar 26, 2019 at 01:23:03AM +0530, Hariprasad Kelam wrote:
> > > This patch fixes below spare errors.
> > >
> > > Sparse error:
> > > make C=2 CF=-D__CHECK_ENDIAN__ M=net/core
> > > ./include/trace/events/neigh.h:73:1: error: directive in argument list
> > > ./include/trace/events/neigh.h:78:1: error: directive in argument list
> > > ./include/trace/events/neigh.h:150:1: error: directive in argument list
> > > ./include/trace/events/neigh.h:155:1: error: directive in argument list
> > >
> > > Changes below two lines to signle line to avoid sparse error
> > > #if IS_ENABLED(CONFIG_IPV6)
> > > if (n->tbl->family == AF_INET6) {
> > > to if (IS_ENABLED(CONFIG_IPV6) && n->tbl->family == AF_INET6)
> > >
> > > and removes reassigning pin6 pointer when IPV6 is enabled
> > >
> > > Signed-off-by: Hariprasad Kelam <hariprasad.kelam@gmail.com>
> > > ---
> > > include/trace/events/neigh.h | 19 +++++--------------
> > > 1 file changed, 5 insertions(+), 14 deletions(-)
> > >
> > > diff --git a/include/trace/events/neigh.h b/include/trace/events/neigh.h
> > > index 0bdb085..6e310ea 100644
> > > --- a/include/trace/events/neigh.h
> > > +++ b/include/trace/events/neigh.h
> > > @@ -70,15 +70,11 @@ TRACE_EVENT(neigh_update,
> > > else
> > > *p32 = 0;
> > >
> > > -#if IS_ENABLED(CONFIG_IPV6)
> > > - if (n->tbl->family == AF_INET6) {
> > > - pin6 = (struct in6_addr *)__entry->primary_key6;
> > > + if (IS_ENABLED(CONFIG_IPV6) && n->tbl->family == AF_INET6)
> > > *pin6 = *(struct in6_addr *)n->primary_key;
> >
> > Why removing the line wheer pin6 is assigned?
> > IMO, the patch should be:
> > -#if IS_ENABLED(CONFIG_IPV6)
> > - if (n->tbl->family == AF_INET6) {
> > + if (IS_ENABLED(CONFIG_IPV6) && n->tbl->family == AF_INET6)
> > pin6 = (struct in6_addr *)__entry->primary_key6;
> > *pin6 = *(struct in6_addr *)n->primary_key;
> >
> > > @@ -147,15 +143,10 @@ DECLARE_EVENT_CLASS(neigh__update,
> > > else
> > > *p32 = 0;
> > >
> > > -#if IS_ENABLED(CONFIG_IPV6)
> > > - if (n->tbl->family == AF_INET6) {
> > > - pin6 = (struct in6_addr *)__entry->primary_key6;
> >
> pin6 is already assigned.
OK, I see. IMO, it would be better to have 2 patches for this:
one for the redundant assignment to pin6 and anotther one for
the IS_ENABLED() change but feel free, if needed, to add my
Reviewed-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-- Luc
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] trace: events: fix error directive in argument list
2019-03-30 12:01 ` Luc Van Oostenryck
@ 2019-03-30 12:40 ` Steven Rostedt
2019-03-30 13:50 ` Roopa Prabhu
0 siblings, 1 reply; 5+ messages in thread
From: Steven Rostedt @ 2019-03-30 12:40 UTC (permalink / raw)
To: Luc Van Oostenryck
Cc: Hariprasad Kelam, mingo, roopa, davem, linux-kernel, linux-sparse
On Sat, 30 Mar 2019 13:01:41 +0100
Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote:
> OK, I see. IMO, it would be better to have 2 patches for this:
> one for the redundant assignment to pin6 and anotther one for
> the IS_ENABLED() change but feel free, if needed, to add my
I agree with it being separate patches. I'm big on the "one patch
accomplishes one task" ideology.
-- Steve
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] trace: events: fix error directive in argument list
2019-03-30 12:40 ` Steven Rostedt
@ 2019-03-30 13:50 ` Roopa Prabhu
0 siblings, 0 replies; 5+ messages in thread
From: Roopa Prabhu @ 2019-03-30 13:50 UTC (permalink / raw)
To: Steven Rostedt
Cc: Luc Van Oostenryck, Hariprasad Kelam, mingo, David Miller,
Linux Kernel Mailing List, linux-sparse
On Sat, Mar 30, 2019 at 5:40 AM Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Sat, 30 Mar 2019 13:01:41 +0100
> Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote:
>
> > OK, I see. IMO, it would be better to have 2 patches for this:
> > one for the redundant assignment to pin6 and anotther one for
> > the IS_ENABLED() change but feel free, if needed, to add my
>
> I agree with it being separate patches. I'm big on the "one patch
> accomplishes one task" ideology.
>
yes, I will take care of the pin6 assignment separately. This patch
can only address the sparse error.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-03-30 13:50 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20190325195303.GA20629@hari-Inspiron-1545>
[not found] ` <20190327115330.04b5b481@gandalf.local.home>
2019-03-29 23:12 ` [PATCH] trace: events: fix error directive in argument list Luc Van Oostenryck
[not found] ` <20190329232215.itsvo3jj3lu4gr7k@ltop.local>
2019-03-30 11:07 ` Hariprasad Kelam
2019-03-30 12:01 ` Luc Van Oostenryck
2019-03-30 12:40 ` Steven Rostedt
2019-03-30 13:50 ` Roopa Prabhu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox