2015-12-13 18:12:39

by S. Gilles

[permalink] [raw]
Subject: [PATCH] checkpatch: detect leading * in NULL comparison check

Prevent checkpatch.pl from emitting messages like

CHECK: Comparison to NULL could be written "!rx_p"
#51: FILE: drivers/staging/iio/accel/sca3000_ring.c:51:
+ if (*rx_p == NULL) {

by checking for leading * characters in the comparison value.

Signed-off-by: S. Gilles <[email protected]>
---

I've run this through everything in staging/ as a test, it seems to
work okay.

scripts/checkpatch.pl | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index d4960f7..e549d59 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -4995,10 +4995,10 @@ sub process {

# check for pointer comparisons to NULL
if ($^V && $^V ge 5.10.0) {
- while ($line =~ /\b$LvalOrFunc\s*(==|\!=)\s*NULL\b/g) {
- my $val = $1;
+ while ($line =~ /([\*]*)\b$LvalOrFunc\s*(==|\!=)\s*NULL\b/g) {
+ my $val = $1 . $2;
my $equal = "!";
- $equal = "" if ($4 eq "!=");
+ $equal = "" if ($5 eq "!=");
if (CHK("COMPARISON_TO_NULL",
"Comparison to NULL could be written \"${equal}${val}\"\n" . $herecurr) &&
$fix) {
--
2.6.3


2015-12-13 20:49:05

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: detect leading * in NULL comparison check

On Sun, 2015-12-13 at 12:59 -0500, S. Gilles wrote:
> Prevent checkpatch.pl from emitting messages like
>
> ? CHECK: Comparison to NULL could be written "!rx_p"
> ? #51: FILE: drivers/staging/iio/accel/sca3000_ring.c:51:
> ? +???????if (*rx_p == NULL) {
>
> by checking for leading * characters in the comparison value.
>
> Signed-off-by: S. Gilles <[email protected]>
> ---
>
> I've run this through everything in staging/ as a test, it seems to
> work okay.

This wouldn't work with

* foo == NULL;

but there don't seem to be any in the kernel source.

2015-12-13 22:03:45

by S. Gilles

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: detect leading * in NULL comparison check

On 2015-12-13T12:49:01, Joe Perches wrote:
> On Sun, 2015-12-13 at 12:59 -0500, S. Gilles wrote:
> > Prevent checkpatch.pl from emitting messages like
> >
> >   CHECK: Comparison to NULL could be written "!rx_p"
> >   #51: FILE: drivers/staging/iio/accel/sca3000_ring.c:51:
> >   +       if (*rx_p == NULL) {
> >
> > by checking for leading * characters in the comparison value.
> >
> > Signed-off-by: S. Gilles <[email protected]>
> > ---
> >
> > I've run this through everything in staging/ as a test, it seems to
> > work okay.
>
> This wouldn't work with
>
> * foo == NULL;
>
> but there don't seem to be any in the kernel source.

Some other stuff like

*(foo) == NULL

won't be caught as well, but in such false negative cases, other style
conventions would have to be violated anyway. I'm not sure how strong
that argument is.

--
S. Gilles