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
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.
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