On (06/09/15 22:52), Joe Perches wrote:
> Sergey Senozhatsky has modified several destroy functions that can
> now be called with NULL values.
> 
>  - kmem_cache_destroy()
>  - mempool_destroy()
>  - dma_pool_destroy()
> 
> Update checkpatch to warn when those functions are preceded by an if.
> 
> Update checkpatch to --fix all the calls too only when the code style
> form is using leading tabs.
> 
> from:
>       if (foo)
>               <func>(foo);
> to:
>       <func>(foo);
> 
> Signed-off-by: Joe Perches <j...@perches.com>

nice.

works fine to me. you can add
Tested-by: Sergey Senozhatsky <sergey.senozhat...@gmail.com>

if needed.

        -ss

> ---
> V2: Remove useless debugging print messages and multiple quotemetas
> 
>  scripts/checkpatch.pl | 32 ++++++++++++++++++++++++++++----
>  1 file changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 69c4716..87d3bf1aa 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -4800,10 +4800,34 @@ sub process {
>  
>  # check for needless "if (<foo>) fn(<foo>)" uses
>               if ($prevline =~ /\bif\s*\(\s*($Lval)\s*\)/) {
> -                     my $expr = '\s*\(\s*' . quotemeta($1) . '\s*\)\s*;';
> -                     if ($line =~ 
> /\b(kfree|usb_free_urb|debugfs_remove(?:_recursive)?)$expr/) {
> -                             WARN('NEEDLESS_IF',
> -                                  "$1(NULL) is safe and this check is 
> probably not required\n" . $hereprev);
> +                     my $tested = quotemeta($1);
> +                     my $expr = '\s*\(\s*' . $tested . '\s*\)\s*;';
> +                     if ($line =~ 
> /\b(kfree|usb_free_urb|debugfs_remove(?:_recursive)?|(?:kmem_cache|mempool|dma_pool)_destroy)$expr/)
>  {
> +                             my $func = $1;
> +                             if (WARN('NEEDLESS_IF',
> +                                      "$func(NULL) is safe and this check is 
> probably not required\n" . $hereprev) &&
> +                                 $fix) {
> +                                     my $do_fix = 1;
> +                                     my $leading_tabs = "";
> +                                     my $new_leading_tabs = "";
> +                                     if ($lines[$linenr - 2] =~ 
> /^\+(\t*)if\s*\(\s*$tested\s*\)\s*$/) {
> +                                             $leading_tabs = $1;
> +                                     } else {
> +                                             $do_fix = 0;
> +                                     }
> +                                     if ($lines[$linenr - 1] =~ 
> /^\+(\t+)$func\s*\(\s*$tested\s*\)\s*;\s*$/) {
> +                                             $new_leading_tabs = $1;
> +                                             if (length($leading_tabs) + 1 
> ne length($new_leading_tabs)) {
> +                                                     $do_fix = 0;
> +                                             }
> +                                     } else {
> +                                             $do_fix = 0;
> +                                     }
> +                                     if ($do_fix) {
> +                                             fix_delete_line($fixlinenr - 1, 
> $prevrawline);
> +                                             $fixed[$fixlinenr] =~ 
> s/^\+$new_leading_tabs/\+$leading_tabs/;
> +                                     }
> +                             }
>                       }
>               }
>  
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to