mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:44:45 +01:00
scripts/coccinelle: Find PTR_ERR() to %pe candidates
Add a new Coccinelle script to identify places where PTR_ERR() is used
in print functions and suggest using the %pe format specifier instead.
For printing error pointers (i.e., a pointer for which IS_ERR() is true)
%pe will print a symbolic error name (e.g,. -EINVAL), opposed to the raw
errno (e.g,. -22) produced by PTR_ERR().
It also makes the code cleaner by saving a redundant call to PTR_ERR().
The script supports context, report, and org modes.
Example transformation:
printk("Error: %ld\n", PTR_ERR(ptr)); // Before
printk("Error: %pe\n", ptr); // After
Signed-off-by: Gal Pressman <gal@nvidia.com>
Reviewed-by: Alexei Lazar <alazar@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/1758192227-701925-2-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
203e3beb73
commit
57c49d2355
1 changed files with 34 additions and 0 deletions
34
scripts/coccinelle/misc/ptr_err_to_pe.cocci
Normal file
34
scripts/coccinelle/misc/ptr_err_to_pe.cocci
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/// Use %pe format specifier instead of PTR_ERR() for printing error pointers.
|
||||
///
|
||||
/// For printing error pointers (i.e., a pointer for which IS_ERR() is true)
|
||||
/// %pe will print a symbolic error name (e.g., -EINVAL), opposed to the raw
|
||||
/// errno (e.g., -22) produced by PTR_ERR().
|
||||
/// It also makes the code cleaner by saving a redundant call to PTR_ERR().
|
||||
///
|
||||
// Confidence: High
|
||||
// Copyright: (C) 2025 NVIDIA CORPORATION & AFFILIATES.
|
||||
// URL: https://coccinelle.gitlabpages.inria.fr/website
|
||||
// Options: --no-includes --include-headers
|
||||
|
||||
virtual context
|
||||
virtual org
|
||||
virtual report
|
||||
|
||||
@r@
|
||||
expression ptr;
|
||||
constant fmt;
|
||||
position p;
|
||||
identifier print_func;
|
||||
@@
|
||||
* print_func(..., fmt, ..., PTR_ERR@p(ptr), ...)
|
||||
|
||||
@script:python depends on r && report@
|
||||
p << r.p;
|
||||
@@
|
||||
coccilib.report.print_report(p[0], "WARNING: Consider using %pe to print PTR_ERR()")
|
||||
|
||||
@script:python depends on r && org@
|
||||
p << r.p;
|
||||
@@
|
||||
coccilib.org.print_todo(p[0], "WARNING: Consider using %pe to print PTR_ERR()")
|
||||
Loading…
Add table
Add a link
Reference in a new issue