Messages in this thread | | | Date | Tue, 24 Sep 2013 08:45:29 -0700 | From | "Paul E. McKenney" <> | Subject | Re: False positive in checkpatch |
| |
On Tue, Sep 24, 2013 at 04:13:29PM +0100, Andy Whitcroft wrote: > On Tue, Sep 24, 2013 at 07:03:05AM -0700, Paul E. McKenney wrote: > > On Mon, Sep 23, 2013 at 09:21:07PM -0700, Joe Perches wrote: > > > On Mon, 2013-09-23 at 15:59 -0700, Paul E. McKenney wrote: > > > > Hello! > > > > > > > > The checkpatch.pl script complains as follows: > > > > > > > > ERROR: need consistent spacing around '*' (ctx:WxB) > > > > #57: FILE: include/linux/rcupdate.h:564: > > > > + ACCESS_ONCE(p) = (typeof(*(v)) __force space *)(v); \ > > > > > > > > Of course, the two uses of '*' are doing different things, so it should > > > > be OK for the spacing to be different. > > > > > > > > Could you please fix this? > > > > > > > > Thanx, Paul > > > > > > > > > > Hi Paul. > > > > > > Try this patch: https://lkml.org/lkml/2013/9/2/428 > > > > > > Andy? Can you verify this suggested patch please? > > > > That does it, thank you! And it does look like this patch was directed > > precisely at this patch. ;-) > > > > Thanx, Paul > > > > How about this one, it is a bit of a hack but does at least correctly > correct the formal characterisation of the operator to unary. > > Working on getting this tested a bit better before sending it out > formally.
Works for me!
Thanx, Paul
> -apw > > > >From 5b4e22c123b3492838d12181129a8c168598dbf4 Mon Sep 17 00:00:00 2001 > From: Andy Whitcroft <apw@canonical.com> > Date: Tue, 24 Sep 2013 16:10:46 +0100 > Subject: [PATCH] checkpatch: handle miss identified binary operators which > bump a close parenthesis > > When we hit a close parenthesis, any binary operators we have without right > hand sides cannot actually be binary if the code is correctly formatted. > Go back and fix up any we get wrong. > > Signed-off-by: Andy Whitcroft <apw@canonical.com> > --- > scripts/checkpatch.pl | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > index 47016c3..3d56e6e 100755 > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -1277,6 +1277,16 @@ sub annotate_values { > } else { > print "PAREN('$1')\n" if ($dbg_values > 1); > } > + # Check for any pending binary operators, if they but up against this > + # bracket then they are really unary, correct them. > + my $pos = length($res) - 1; > + while ($pos >= 0 && substr($res, $pos, 1) eq 'N') { > + if (substr($var, $pos, 1) eq 'B') { > + substr($var, $pos, 1) = 'U'; > + print "BINARY WACKED TO UNARY at $pos\n" if ($dbg_values > 1); > + } > + $pos--; > + } > > } elsif ($cur =~ /^($Ident)\s*\(/o) { > print "FUNC($1)\n" if ($dbg_values > 1); > @@ -1331,12 +1341,12 @@ sub annotate_values { > } elsif ($cur =~ /^(-(?![->])|\+(?!\+)|\*|\&\&|\&)/o) { > my $variant; > > - print "OPV($1)\n" if ($dbg_values > 1); > if ($type eq 'V') { > $variant = 'B'; > } else { > $variant = 'U'; > } > + print "OPV($1) -> $variant\n" if ($dbg_values > 1); > > substr($var, length($res), 1, $variant); > $type = 'N'; > -- > 1.8.1.2 >
| |