[prev in list] [next in list] [prev in thread] [next in thread] 

List:       intel-wired-lan
Subject:    [Intel-wired-lan] [PATCH net-next v3 2/3] checkpatch: add ethtool_sprintf rules
From:       Justin Stitt <justinstitt () google ! com>
Date:       2023-10-27 22:05:34
Message-ID: 20231027-ethtool_puts_impl-v3-2-3466ac679304 () google ! com
[Download RAW message or body]

Add some warnings for using ethtool_sprintf() where a simple
ethtool_puts() would suffice.

The two cases are:

1) Use ethtool_sprintf() with just two arguments:
> ethtool_sprintf(&data, driver[i].name);
or
2) Use ethtool_sprintf() with a standalone "%s" fmt string:
> ethtool_sprintf(&data, "%s", driver[i].name);

The former may cause -Wformat-security warnings while the latter is just
not preferred. Both are safely in the category of warnings, not errors.

Signed-off-by: Justin Stitt <justinstitt@google.com>
---
 scripts/checkpatch.pl | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7d16f863edf1..9369ce1d15c5 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -7020,6 +7020,25 @@ sub process {
 			     "Prefer strscpy, strscpy_pad, or __nonstring over strncpy - see: \
https://github.com/KSPP/linux/issues/90\n" . $herecurr);  }
 
+# ethtool_sprintf uses that should likely be ethtool_puts
+		if ($line =~ /\bethtool_sprintf\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\)/) {
+			if (WARN("PREFER_ETHTOOL_PUTS",
+				 "Prefer ethtool_puts over ethtool_sprintf with only two arguments\n" . \
$herecurr) && +			    $fix) {
+				$fixed[$fixlinenr] =~ \
s/\bethtool_sprintf\s*\(\s*($FuncArg)\s*,\s*($FuncArg)/ethtool_puts($1, $7)/; +			}
+		}
+
+		# use $rawline because $line loses %s via sanitization and thus we can't match \
against it. +		if ($rawline =~ \
/\bethtool_sprintf\s*\(\s*$FuncArg\s*,\s*\"\%s\"\s*,\s*$FuncArg\s*\)/) { +			if \
(WARN("PREFER_ETHTOOL_PUTS", +				 "Prefer ethtool_puts over ethtool_sprintf with \
standalone \"%s\" specifier\n" . $herecurr) && +			    $fix) {
+				$fixed[$fixlinenr] =~ \
s/\bethtool_sprintf\s*\(\s*($FuncArg)\s*,\s*"\%s"\s*,\s*($FuncArg)/ethtool_puts($1, \
$7)/; +			}
+		}
+
+
 # typecasts on min/max could be min_t/max_t
 		if ($perl_version_ok &&
 		    defined $stat &&

-- 
2.42.0.820.g83a721a137-goog

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic