* [PATCH net-next v5 0/3] ethtool: Add ethtool_puts()
@ 2023-12-06 23:16 justinstitt
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: justinstitt @ 2023-12-06 23:16 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Andrew Lunn,
Florian Fainelli, Vladimir Oltean, Arınç ÜNAL,
Daniel Golle, Landen Chao, DENG Qingfang, Sean Wang,
Matthias Brugger, AngeloGioacchino Del Regno, Linus Walleij,
Alvin Šipraga, Wei Fang, Shenwei Wang, Clark Wang,
NXP Linux Team, Lars Povlsen, Steen Hegelund, Daniel Machon,
UNGLinuxDriver, Jiawen Wu, Mengyuan Lou, Heiner Kallweit,
Russell King, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend
Cc: linux-kernel, netdev, Nick Desaulniers, Nathan Chancellor,
Kees Cook, intel-wired-lan, oss-drivers, linux-hyperv,
linux-arm-kernel, linux-mediatek, bpf, Justin Stitt
Hi,
This series aims to implement ethtool_puts() and send out a wave 1 of
conversions from ethtool_sprintf(). There's also a checkpatch patch
included to check for the cases listed below.
This was sparked from recent discussion here [1]
The conversions are used in cases where ethtool_sprintf() was being used
with just two arguments:
| ethtool_sprintf(&data, buffer[i].name);
or when it's used with format string: "%s"
| ethtool_sprintf(&data, "%s", buffer[i].name);
which both now become:
| ethtool_puts(&data, buffer[i].name);
The first case commonly triggers a -Wformat-security warning with Clang
due to potential problems with format flags present in the strings [3].
The second is just a bit weird with a plain-ol' "%s".
Changes found with Cocci [4] and grep [5].
[1]: https://lore.kernel.org/all/202310141935.B326C9E@keescook/
[2]: https://lore.kernel.org/all/?q=dfb%3Aethtool_sprintf+AND+f%3Ajustinstitt
[3]: https://lore.kernel.org/all/202310101528.9496539BE@keescook/
[4]: (script authored by Kees w/ modifications from Joe)
@replace_2_args@
expression BUF;
expression VAR;
@@
- ethtool_sprintf(BUF, VAR)
+ ethtool_puts(BUF, VAR)
@replace_3_args@
expression BUF;
expression VAR;
@@
- ethtool_sprintf(BUF, "%s", VAR)
+ ethtool_puts(BUF, VAR)
- ethtool_sprintf(&BUF, "%s", VAR)
+ ethtool_puts(&BUF, VAR)
[5]: $ rg "ethtool_sprintf\(\s*[^,)]+\s*,\s*[^,)]+\s*\)"
Signed-off-by: Justin Stitt <justinstitt@google.com>
---
Changes in v5:
- updated documentation to include info about the lack of a trailing newline
(Thanks Russell)
- rebased onto mainline
- Link to v4: https://lore.kernel.org/r/20231102-ethtool_puts_impl-v4-0-14e1e9278496@google.com
Changes in v4:
- update documentation to match:
https://lore.kernel.org/all/20231028192511.100001-1-andrew@lunn.ch/
- Link to v3: https://lore.kernel.org/r/20231027-ethtool_puts_impl-v3-0-3466ac679304@google.com
Changes in v3:
- fix force_speed_maps merge conflict + formatting (thanks Vladimir)
- rebase onto net-next (thanks Andrew, Vladimir)
- change subject (thanks Vladimir)
- fix checkpatch formatting + implementation (thanks Joe)
- Link to v2: https://lore.kernel.org/r/20231026-ethtool_puts_impl-v2-0-0d67cbdd0538@google.com
Changes in v2:
- wrap lines better in replacement (thanks Joe, Kees)
- add --fix to checkpatch (thanks Joe)
- clean up checkpatch formatting (thanks Joe, et al.)
- rebase against next
- Link to v1: https://lore.kernel.org/r/20231025-ethtool_puts_impl-v1-0-6a53a93d3b72@google.com
---
Justin Stitt (3):
ethtool: Implement ethtool_puts()
checkpatch: add ethtool_sprintf rules
net: Convert some ethtool_sprintf() to ethtool_puts()
drivers/net/dsa/lantiq_gswip.c | 2 +-
drivers/net/dsa/mt7530.c | 2 +-
drivers/net/dsa/qca/qca8k-common.c | 2 +-
drivers/net/dsa/realtek/rtl8365mb.c | 2 +-
drivers/net/dsa/realtek/rtl8366-core.c | 2 +-
drivers/net/dsa/vitesse-vsc73xx-core.c | 8 +--
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 4 +-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 2 +-
drivers/net/ethernet/freescale/fec_main.c | 4 +-
.../net/ethernet/fungible/funeth/funeth_ethtool.c | 8 +--
drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 2 +-
.../net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c | 2 +-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 65 +++++++++++-----------
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 6 +-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 3 +-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 9 +--
drivers/net/ethernet/intel/idpf/idpf_ethtool.c | 2 +-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 6 +-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 6 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 5 +-
.../net/ethernet/microchip/sparx5/sparx5_ethtool.c | 2 +-
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 44 +++++++--------
drivers/net/ethernet/pensando/ionic/ionic_stats.c | 4 +-
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 4 +-
drivers/net/phy/nxp-tja11xx.c | 2 +-
drivers/net/phy/smsc.c | 2 +-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 10 ++--
include/linux/ethtool.h | 13 +++++
net/ethtool/ioctl.c | 7 +++
scripts/checkpatch.pl | 19 +++++++
31 files changed, 139 insertions(+), 112 deletions(-)
---
base-commit: bee0e7762ad2c6025b9f5245c040fcc36ef2bde8
change-id: 20231025-ethtool_puts_impl-a1479ffbc7e0
Best regards,
--
Justin Stitt <justinstitt@google.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts()
2023-12-06 23:16 [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() justinstitt
@ 2023-12-06 23:16 ` justinstitt
2023-12-07 7:12 ` [Intel-wired-lan] " Przemek Kitszel
` (2 more replies)
2023-12-06 23:16 ` [PATCH net-next v5 2/3] checkpatch: add ethtool_sprintf rules justinstitt
` (2 subsequent siblings)
3 siblings, 3 replies; 13+ messages in thread
From: justinstitt @ 2023-12-06 23:16 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Andrew Lunn,
Florian Fainelli, Vladimir Oltean, Arınç ÜNAL,
Daniel Golle, Landen Chao, DENG Qingfang, Sean Wang,
Matthias Brugger, AngeloGioacchino Del Regno, Linus Walleij,
Alvin Šipraga, Wei Fang, Shenwei Wang, Clark Wang,
NXP Linux Team, Lars Povlsen, Steen Hegelund, Daniel Machon,
UNGLinuxDriver, Jiawen Wu, Mengyuan Lou, Heiner Kallweit,
Russell King, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend
Cc: linux-kernel, netdev, Nick Desaulniers, Nathan Chancellor,
Kees Cook, intel-wired-lan, oss-drivers, linux-hyperv,
linux-arm-kernel, linux-mediatek, bpf, Justin Stitt
Use strscpy() to implement ethtool_puts().
Functionally the same as ethtool_sprintf() when it's used with two
arguments or with just "%s" format specifier.
Signed-off-by: Justin Stitt <justinstitt@google.com>
---
include/linux/ethtool.h | 13 +++++++++++++
net/ethtool/ioctl.c | 7 +++++++
2 files changed, 20 insertions(+)
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 689028257fcc..2480a4e4a331 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -1053,6 +1053,19 @@ static inline int ethtool_mm_frag_size_min_to_add(u32 val_min, u32 *val_add,
*/
extern __printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...);
+/**
+ * ethtool_puts - Write string to ethtool string data
+ * @data: Pointer to a pointer to the start of string to update
+ * @str: String to write
+ *
+ * Write string to *data without a trailing newline. Update *data
+ * to point at start of next string.
+ *
+ * Prefer this function to ethtool_sprintf() when given only
+ * two arguments or if @fmt is just "%s".
+ */
+extern void ethtool_puts(u8 **data, const char *str);
+
/* Link mode to forced speed capabilities maps */
struct ethtool_forced_speed_map {
u32 speed;
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 0b0ce4f81c01..abdf05edf804 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -1991,6 +1991,13 @@ __printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...)
}
EXPORT_SYMBOL(ethtool_sprintf);
+void ethtool_puts(u8 **data, const char *str)
+{
+ strscpy(*data, str, ETH_GSTRING_LEN);
+ *data += ETH_GSTRING_LEN;
+}
+EXPORT_SYMBOL(ethtool_puts);
+
static int ethtool_phys_id(struct net_device *dev, void __user *useraddr)
{
struct ethtool_value id;
--
2.43.0.rc2.451.g8631bc7472-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH net-next v5 2/3] checkpatch: add ethtool_sprintf rules
2023-12-06 23:16 [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() justinstitt
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
@ 2023-12-06 23:16 ` justinstitt
2023-12-07 7:39 ` [Intel-wired-lan] " Przemek Kitszel
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
2023-12-08 11:00 ` [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() patchwork-bot+netdevbpf
3 siblings, 1 reply; 13+ messages in thread
From: justinstitt @ 2023-12-06 23:16 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Andrew Lunn,
Florian Fainelli, Vladimir Oltean, Arınç ÜNAL,
Daniel Golle, Landen Chao, DENG Qingfang, Sean Wang,
Matthias Brugger, AngeloGioacchino Del Regno, Linus Walleij,
Alvin Šipraga, Wei Fang, Shenwei Wang, Clark Wang,
NXP Linux Team, Lars Povlsen, Steen Hegelund, Daniel Machon,
UNGLinuxDriver, Jiawen Wu, Mengyuan Lou, Heiner Kallweit,
Russell King, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend
Cc: linux-kernel, netdev, Nick Desaulniers, Nathan Chancellor,
Kees Cook, intel-wired-lan, oss-drivers, linux-hyperv,
linux-arm-kernel, linux-mediatek, bpf, Justin Stitt
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 25fdb7fda112..6924731110d8 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -7011,6 +7011,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.43.0.rc2.451.g8631bc7472-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts()
2023-12-06 23:16 [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() justinstitt
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
2023-12-06 23:16 ` [PATCH net-next v5 2/3] checkpatch: add ethtool_sprintf rules justinstitt
@ 2023-12-06 23:16 ` justinstitt
2023-12-07 7:19 ` Wei Fang
` (3 more replies)
2023-12-08 11:00 ` [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() patchwork-bot+netdevbpf
3 siblings, 4 replies; 13+ messages in thread
From: justinstitt @ 2023-12-06 23:16 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Andrew Lunn,
Florian Fainelli, Vladimir Oltean, Arınç ÜNAL,
Daniel Golle, Landen Chao, DENG Qingfang, Sean Wang,
Matthias Brugger, AngeloGioacchino Del Regno, Linus Walleij,
Alvin Šipraga, Wei Fang, Shenwei Wang, Clark Wang,
NXP Linux Team, Lars Povlsen, Steen Hegelund, Daniel Machon,
UNGLinuxDriver, Jiawen Wu, Mengyuan Lou, Heiner Kallweit,
Russell King, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend
Cc: linux-kernel, netdev, Nick Desaulniers, Nathan Chancellor,
Kees Cook, intel-wired-lan, oss-drivers, linux-hyperv,
linux-arm-kernel, linux-mediatek, bpf, Justin Stitt
This patch converts some basic cases of ethtool_sprintf() to
ethtool_puts().
The conversions are used in cases where ethtool_sprintf() was being used
with just two arguments:
| ethtool_sprintf(&data, buffer[i].name);
or when it's used with format string: "%s"
| ethtool_sprintf(&data, "%s", buffer[i].name);
which both now become:
| ethtool_puts(&data, buffer[i].name);
Signed-off-by: Justin Stitt <justinstitt@google.com>
---
drivers/net/dsa/lantiq_gswip.c | 2 +-
drivers/net/dsa/mt7530.c | 2 +-
drivers/net/dsa/qca/qca8k-common.c | 2 +-
drivers/net/dsa/realtek/rtl8365mb.c | 2 +-
drivers/net/dsa/realtek/rtl8366-core.c | 2 +-
drivers/net/dsa/vitesse-vsc73xx-core.c | 8 +--
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 4 +-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 2 +-
drivers/net/ethernet/freescale/fec_main.c | 4 +-
.../net/ethernet/fungible/funeth/funeth_ethtool.c | 8 +--
drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 2 +-
.../net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c | 2 +-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 65 +++++++++++-----------
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 6 +-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 3 +-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 9 +--
drivers/net/ethernet/intel/idpf/idpf_ethtool.c | 2 +-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 6 +-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 6 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 5 +-
.../net/ethernet/microchip/sparx5/sparx5_ethtool.c | 2 +-
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 44 +++++++--------
drivers/net/ethernet/pensando/ionic/ionic_stats.c | 4 +-
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 4 +-
drivers/net/phy/nxp-tja11xx.c | 2 +-
drivers/net/phy/smsc.c | 2 +-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 10 ++--
28 files changed, 100 insertions(+), 112 deletions(-)
diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index 9c185c9f0963..05a017c9ef3d 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -1759,7 +1759,7 @@ static void gswip_get_strings(struct dsa_switch *ds, int port, u32 stringset,
return;
for (i = 0; i < ARRAY_SIZE(gswip_rmon_cnt); i++)
- ethtool_sprintf(&data, "%s", gswip_rmon_cnt[i].name);
+ ethtool_puts(&data, gswip_rmon_cnt[i].name);
}
static u32 gswip_bcm_ram_entry_read(struct gswip_priv *priv, u32 table,
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index d27c6b70a2f6..391c4dbdff42 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -836,7 +836,7 @@ mt7530_get_strings(struct dsa_switch *ds, int port, u32 stringset,
return;
for (i = 0; i < ARRAY_SIZE(mt7530_mib); i++)
- ethtool_sprintf(&data, "%s", mt7530_mib[i].name);
+ ethtool_puts(&data, mt7530_mib[i].name);
}
static void
diff --git a/drivers/net/dsa/qca/qca8k-common.c b/drivers/net/dsa/qca/qca8k-common.c
index 9243eff8918d..2358cd399c7e 100644
--- a/drivers/net/dsa/qca/qca8k-common.c
+++ b/drivers/net/dsa/qca/qca8k-common.c
@@ -487,7 +487,7 @@ void qca8k_get_strings(struct dsa_switch *ds, int port, u32 stringset,
return;
for (i = 0; i < priv->info->mib_count; i++)
- ethtool_sprintf(&data, "%s", ar8327_mib[i].name);
+ ethtool_puts(&data, ar8327_mib[i].name);
}
void qca8k_get_ethtool_stats(struct dsa_switch *ds, int port,
diff --git a/drivers/net/dsa/realtek/rtl8365mb.c b/drivers/net/dsa/realtek/rtl8365mb.c
index 0875e4fc9f57..b072045eb154 100644
--- a/drivers/net/dsa/realtek/rtl8365mb.c
+++ b/drivers/net/dsa/realtek/rtl8365mb.c
@@ -1303,7 +1303,7 @@ static void rtl8365mb_get_strings(struct dsa_switch *ds, int port, u32 stringset
for (i = 0; i < RTL8365MB_MIB_END; i++) {
struct rtl8365mb_mib_counter *mib = &rtl8365mb_mib_counters[i];
- ethtool_sprintf(&data, "%s", mib->name);
+ ethtool_puts(&data, mib->name);
}
}
diff --git a/drivers/net/dsa/realtek/rtl8366-core.c b/drivers/net/dsa/realtek/rtl8366-core.c
index 82e267b8fddb..59f98d2c8769 100644
--- a/drivers/net/dsa/realtek/rtl8366-core.c
+++ b/drivers/net/dsa/realtek/rtl8366-core.c
@@ -401,7 +401,7 @@ void rtl8366_get_strings(struct dsa_switch *ds, int port, u32 stringset,
return;
for (i = 0; i < priv->num_mib_counters; i++)
- ethtool_sprintf(&data, "%s", priv->mib_counters[i].name);
+ ethtool_puts(&data, priv->mib_counters[i].name);
}
EXPORT_SYMBOL_GPL(rtl8366_get_strings);
diff --git a/drivers/net/dsa/vitesse-vsc73xx-core.c b/drivers/net/dsa/vitesse-vsc73xx-core.c
index e6f29e4e508c..dd50502e2122 100644
--- a/drivers/net/dsa/vitesse-vsc73xx-core.c
+++ b/drivers/net/dsa/vitesse-vsc73xx-core.c
@@ -949,7 +949,7 @@ static void vsc73xx_get_strings(struct dsa_switch *ds, int port, u32 stringset,
indices[5] = ((val >> 26) & 0x1f); /* TX counter 2 */
/* The first counters is the RX octets */
- ethtool_sprintf(&buf, "RxEtherStatsOctets");
+ ethtool_puts(&buf, "RxEtherStatsOctets");
/* Each port supports recording 3 RX counters and 3 TX counters,
* figure out what counters we use in this set-up and return the
@@ -959,15 +959,15 @@ static void vsc73xx_get_strings(struct dsa_switch *ds, int port, u32 stringset,
*/
for (i = 0; i < 3; i++) {
cnt = vsc73xx_find_counter(vsc, indices[i], false);
- ethtool_sprintf(&buf, "%s", cnt ? cnt->name : "");
+ ethtool_puts(&buf, cnt ? cnt->name : "");
}
/* TX stats begins with the number of TX octets */
- ethtool_sprintf(&buf, "TxEtherStatsOctets");
+ ethtool_puts(&buf, "TxEtherStatsOctets");
for (i = 3; i < 6; i++) {
cnt = vsc73xx_find_counter(vsc, indices[i], true);
- ethtool_sprintf(&buf, "%s", cnt ? cnt->name : "");
+ ethtool_puts(&buf, cnt ? cnt->name : "");
}
}
diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index d671df4b76bc..e3ef081aa42b 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -299,13 +299,13 @@ static void ena_get_strings(struct ena_adapter *adapter,
for (i = 0; i < ENA_STATS_ARRAY_GLOBAL; i++) {
ena_stats = &ena_stats_global_strings[i];
- ethtool_sprintf(&data, ena_stats->name);
+ ethtool_puts(&data, ena_stats->name);
}
if (eni_stats_needed) {
for (i = 0; i < ENA_STATS_ARRAY_ENI(adapter); i++) {
ena_stats = &ena_stats_eni_strings[i];
- ethtool_sprintf(&data, ena_stats->name);
+ ethtool_puts(&data, ena_stats->name);
}
}
diff --git a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c
index df10edff5603..d1ad6c9f8140 100644
--- a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c
+++ b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c
@@ -608,7 +608,7 @@ bnad_get_strings(struct net_device *netdev, u32 stringset, u8 *string)
for (i = 0; i < BNAD_ETHTOOL_STATS_NUM; i++) {
BUG_ON(!(strlen(bnad_net_stats_strings[i]) < ETH_GSTRING_LEN));
- ethtool_sprintf(&string, bnad_net_stats_strings[i]);
+ ethtool_puts(&string, bnad_net_stats_strings[i]);
}
bmap = bna_tx_rid_mask(&bnad->bna);
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index c3b7694a7485..bae9536de767 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -2932,10 +2932,10 @@ static void fec_enet_get_strings(struct net_device *netdev,
switch (stringset) {
case ETH_SS_STATS:
for (i = 0; i < ARRAY_SIZE(fec_stats); i++) {
- ethtool_sprintf(&data, "%s", fec_stats[i].name);
+ ethtool_puts(&data, fec_stats[i].name);
}
for (i = 0; i < ARRAY_SIZE(fec_xdp_stat_strs); i++) {
- ethtool_sprintf(&data, "%s", fec_xdp_stat_strs[i]);
+ ethtool_puts(&data, fec_xdp_stat_strs[i]);
}
page_pool_ethtool_stats_get_strings(data);
diff --git a/drivers/net/ethernet/fungible/funeth/funeth_ethtool.c b/drivers/net/ethernet/fungible/funeth/funeth_ethtool.c
index 31aa185f4d17..091c93bd7587 100644
--- a/drivers/net/ethernet/fungible/funeth/funeth_ethtool.c
+++ b/drivers/net/ethernet/fungible/funeth/funeth_ethtool.c
@@ -655,7 +655,7 @@ static void fun_get_strings(struct net_device *netdev, u32 sset, u8 *data)
i);
}
for (j = 0; j < ARRAY_SIZE(txq_stat_names); j++)
- ethtool_sprintf(&p, txq_stat_names[j]);
+ ethtool_puts(&p, txq_stat_names[j]);
for (i = 0; i < fp->num_xdpqs; i++) {
for (j = 0; j < ARRAY_SIZE(xdpq_stat_names); j++)
@@ -663,7 +663,7 @@ static void fun_get_strings(struct net_device *netdev, u32 sset, u8 *data)
xdpq_stat_names[j], i);
}
for (j = 0; j < ARRAY_SIZE(xdpq_stat_names); j++)
- ethtool_sprintf(&p, xdpq_stat_names[j]);
+ ethtool_puts(&p, xdpq_stat_names[j]);
for (i = 0; i < netdev->real_num_rx_queues; i++) {
for (j = 0; j < ARRAY_SIZE(rxq_stat_names); j++)
@@ -671,10 +671,10 @@ static void fun_get_strings(struct net_device *netdev, u32 sset, u8 *data)
i);
}
for (j = 0; j < ARRAY_SIZE(rxq_stat_names); j++)
- ethtool_sprintf(&p, rxq_stat_names[j]);
+ ethtool_puts(&p, rxq_stat_names[j]);
for (j = 0; j < ARRAY_SIZE(tls_stat_names); j++)
- ethtool_sprintf(&p, tls_stat_names[j]);
+ ethtool_puts(&p, tls_stat_names[j]);
break;
default:
break;
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
index 8f391e2adcc0..bdb7afaabdd0 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
@@ -678,7 +678,7 @@ static void hns_gmac_get_strings(u32 stringset, u8 *data)
return;
for (i = 0; i < ARRAY_SIZE(g_gmac_stats_string); i++)
- ethtool_sprintf(&buff, g_gmac_stats_string[i].desc);
+ ethtool_puts(&buff, g_gmac_stats_string[i].desc);
}
static int hns_gmac_get_sset_count(int stringset)
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c
index fc26ffaae620..c58833eb4830 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c
@@ -752,7 +752,7 @@ static void hns_xgmac_get_strings(u32 stringset, u8 *data)
return;
for (i = 0; i < ARRAY_SIZE(g_xgmac_stats_string); i++)
- ethtool_sprintf(&buff, g_xgmac_stats_string[i].desc);
+ ethtool_puts(&buff, g_xgmac_stats_string[i].desc);
}
/**
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index b54f3706fb97..fe40cceb0f79 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -912,42 +912,41 @@ static void hns_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
if (stringset == ETH_SS_TEST) {
if (priv->ae_handle->phy_if != PHY_INTERFACE_MODE_XGMII)
- ethtool_sprintf(&buff,
- hns_nic_test_strs[MAC_INTERNALLOOP_MAC]);
- ethtool_sprintf(&buff,
- hns_nic_test_strs[MAC_INTERNALLOOP_SERDES]);
+ ethtool_puts(&buff,
+ hns_nic_test_strs[MAC_INTERNALLOOP_MAC]);
+ ethtool_puts(&buff, hns_nic_test_strs[MAC_INTERNALLOOP_SERDES]);
if ((netdev->phydev) && (!netdev->phydev->is_c45))
- ethtool_sprintf(&buff,
- hns_nic_test_strs[MAC_INTERNALLOOP_PHY]);
+ ethtool_puts(&buff,
+ hns_nic_test_strs[MAC_INTERNALLOOP_PHY]);
} else {
- ethtool_sprintf(&buff, "rx_packets");
- ethtool_sprintf(&buff, "tx_packets");
- ethtool_sprintf(&buff, "rx_bytes");
- ethtool_sprintf(&buff, "tx_bytes");
- ethtool_sprintf(&buff, "rx_errors");
- ethtool_sprintf(&buff, "tx_errors");
- ethtool_sprintf(&buff, "rx_dropped");
- ethtool_sprintf(&buff, "tx_dropped");
- ethtool_sprintf(&buff, "multicast");
- ethtool_sprintf(&buff, "collisions");
- ethtool_sprintf(&buff, "rx_over_errors");
- ethtool_sprintf(&buff, "rx_crc_errors");
- ethtool_sprintf(&buff, "rx_frame_errors");
- ethtool_sprintf(&buff, "rx_fifo_errors");
- ethtool_sprintf(&buff, "rx_missed_errors");
- ethtool_sprintf(&buff, "tx_aborted_errors");
- ethtool_sprintf(&buff, "tx_carrier_errors");
- ethtool_sprintf(&buff, "tx_fifo_errors");
- ethtool_sprintf(&buff, "tx_heartbeat_errors");
- ethtool_sprintf(&buff, "rx_length_errors");
- ethtool_sprintf(&buff, "tx_window_errors");
- ethtool_sprintf(&buff, "rx_compressed");
- ethtool_sprintf(&buff, "tx_compressed");
- ethtool_sprintf(&buff, "netdev_rx_dropped");
- ethtool_sprintf(&buff, "netdev_tx_dropped");
-
- ethtool_sprintf(&buff, "netdev_tx_timeout");
+ ethtool_puts(&buff, "rx_packets");
+ ethtool_puts(&buff, "tx_packets");
+ ethtool_puts(&buff, "rx_bytes");
+ ethtool_puts(&buff, "tx_bytes");
+ ethtool_puts(&buff, "rx_errors");
+ ethtool_puts(&buff, "tx_errors");
+ ethtool_puts(&buff, "rx_dropped");
+ ethtool_puts(&buff, "tx_dropped");
+ ethtool_puts(&buff, "multicast");
+ ethtool_puts(&buff, "collisions");
+ ethtool_puts(&buff, "rx_over_errors");
+ ethtool_puts(&buff, "rx_crc_errors");
+ ethtool_puts(&buff, "rx_frame_errors");
+ ethtool_puts(&buff, "rx_fifo_errors");
+ ethtool_puts(&buff, "rx_missed_errors");
+ ethtool_puts(&buff, "tx_aborted_errors");
+ ethtool_puts(&buff, "tx_carrier_errors");
+ ethtool_puts(&buff, "tx_fifo_errors");
+ ethtool_puts(&buff, "tx_heartbeat_errors");
+ ethtool_puts(&buff, "rx_length_errors");
+ ethtool_puts(&buff, "tx_window_errors");
+ ethtool_puts(&buff, "rx_compressed");
+ ethtool_puts(&buff, "tx_compressed");
+ ethtool_puts(&buff, "netdev_rx_dropped");
+ ethtool_puts(&buff, "netdev_tx_dropped");
+
+ ethtool_puts(&buff, "netdev_tx_timeout");
h->dev->ops->get_strings(h, stringset, buff);
}
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index fd7163128c4d..79c3e7968a85 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -2514,13 +2514,11 @@ static void i40e_get_priv_flag_strings(struct net_device *netdev, u8 *data)
u8 *p = data;
for (i = 0; i < I40E_PRIV_FLAGS_STR_LEN; i++)
- ethtool_sprintf(&p, "%s",
- i40e_gstrings_priv_flags[i].flag_string);
+ ethtool_puts(&p, i40e_gstrings_priv_flags[i].flag_string);
if (pf->hw.pf_id != 0)
return;
for (i = 0; i < I40E_GL_PRIV_FLAGS_STR_LEN; i++)
- ethtool_sprintf(&p, "%s",
- i40e_gl_gstrings_priv_flags[i].flag_string);
+ ethtool_puts(&p, i40e_gl_gstrings_priv_flags[i].flag_string);
}
static void i40e_get_strings(struct net_device *netdev, u32 stringset,
diff --git a/drivers/net/ethernet/intel/iavf/iavf_ethtool.c b/drivers/net/ethernet/intel/iavf/iavf_ethtool.c
index 6f236d1a6444..75d433dc1974 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_ethtool.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_ethtool.c
@@ -396,8 +396,7 @@ static void iavf_get_priv_flag_strings(struct net_device *netdev, u8 *data)
unsigned int i;
for (i = 0; i < IAVF_PRIV_FLAGS_STR_LEN; i++)
- ethtool_sprintf(&data, "%s",
- iavf_gstrings_priv_flags[i].flag_string);
+ ethtool_puts(&data, iavf_gstrings_priv_flags[i].flag_string);
}
/**
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index a34083567e6f..98c9317581e0 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -1142,8 +1142,7 @@ __ice_get_strings(struct net_device *netdev, u32 stringset, u8 *data,
switch (stringset) {
case ETH_SS_STATS:
for (i = 0; i < ICE_VSI_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- ice_gstrings_vsi_stats[i].stat_string);
+ ethtool_puts(&p, ice_gstrings_vsi_stats[i].stat_string);
if (ice_is_port_repr_netdev(netdev))
return;
@@ -1162,8 +1161,7 @@ __ice_get_strings(struct net_device *netdev, u32 stringset, u8 *data,
return;
for (i = 0; i < ICE_PF_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- ice_gstrings_pf_stats[i].stat_string);
+ ethtool_puts(&p, ice_gstrings_pf_stats[i].stat_string);
for (i = 0; i < ICE_MAX_USER_PRIORITY; i++) {
ethtool_sprintf(&p, "tx_priority_%u_xon.nic", i);
@@ -1179,8 +1177,7 @@ __ice_get_strings(struct net_device *netdev, u32 stringset, u8 *data,
break;
case ETH_SS_PRIV_FLAGS:
for (i = 0; i < ICE_PRIV_FLAG_ARRAY_SIZE; i++)
- ethtool_sprintf(&p, "%s",
- ice_gstrings_priv_flags[i].name);
+ ethtool_puts(&p, ice_gstrings_priv_flags[i].name);
break;
default:
break;
diff --git a/drivers/net/ethernet/intel/idpf/idpf_ethtool.c b/drivers/net/ethernet/intel/idpf/idpf_ethtool.c
index 52ea38669f85..bf58989a573e 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_ethtool.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_ethtool.c
@@ -532,7 +532,7 @@ static void idpf_add_stat_strings(u8 **p, const struct idpf_stats *stats,
unsigned int i;
for (i = 0; i < size; i++)
- ethtool_sprintf(p, "%s", stats[i].stat_string);
+ ethtool_puts(p, stats[i].stat_string);
}
/**
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index 16d2a55d5e17..89dac7b215e5 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -2356,11 +2356,9 @@ static void igb_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
break;
case ETH_SS_STATS:
for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- igb_gstrings_stats[i].stat_string);
+ ethtool_puts(&p, igb_gstrings_stats[i].stat_string);
for (i = 0; i < IGB_NETDEV_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- igb_gstrings_net_stats[i].stat_string);
+ ethtool_puts(&p, igb_gstrings_net_stats[i].stat_string);
for (i = 0; i < adapter->num_tx_queues; i++) {
ethtool_sprintf(&p, "tx_queue_%u_packets", i);
ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c
index 785eaa8e0ba8..2ed92bf34059 100644
--- a/drivers/net/ethernet/intel/igc/igc_ethtool.c
+++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c
@@ -773,11 +773,9 @@ static void igc_ethtool_get_strings(struct net_device *netdev, u32 stringset,
break;
case ETH_SS_STATS:
for (i = 0; i < IGC_GLOBAL_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- igc_gstrings_stats[i].stat_string);
+ ethtool_puts(&p, igc_gstrings_stats[i].stat_string);
for (i = 0; i < IGC_NETDEV_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- igc_gstrings_net_stats[i].stat_string);
+ ethtool_puts(&p, igc_gstrings_net_stats[i].stat_string);
for (i = 0; i < adapter->num_tx_queues; i++) {
ethtool_sprintf(&p, "tx_queue_%u_packets", i);
ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index 4dd897806fa5..dd722b0381e0 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -1413,12 +1413,11 @@ static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
switch (stringset) {
case ETH_SS_TEST:
for (i = 0; i < IXGBE_TEST_LEN; i++)
- ethtool_sprintf(&p, "%s", ixgbe_gstrings_test[i]);
+ ethtool_puts(&p, ixgbe_gstrings_test[i]);
break;
case ETH_SS_STATS:
for (i = 0; i < IXGBE_GLOBAL_STATS_LEN; i++)
- ethtool_sprintf(&p, "%s",
- ixgbe_gstrings_stats[i].stat_string);
+ ethtool_puts(&p, ixgbe_gstrings_stats[i].stat_string);
for (i = 0; i < netdev->num_tx_queues; i++) {
ethtool_sprintf(&p, "tx_queue_%u_packets", i);
ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c b/drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c
index 37d2584b48a7..a06dc5a9b355 100644
--- a/drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c
+++ b/drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c
@@ -1012,7 +1012,7 @@ static void sparx5_get_sset_strings(struct net_device *ndev, u32 sset, u8 *data)
return;
for (idx = 0; idx < sparx5->num_ethtool_stats; idx++)
- ethtool_sprintf(&data, "%s", sparx5->stats_layout[idx]);
+ ethtool_puts(&data, sparx5->stats_layout[idx]);
}
static void sparx5_get_sset_data(struct net_device *ndev,
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
index e75cbb287625..1636ce61a3c0 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
@@ -800,7 +800,7 @@ static void nfp_get_self_test_strings(struct net_device *netdev, u8 *data)
for (i = 0; i < NFP_TEST_TOTAL_NUM; i++)
if (nfp_self_test[i].is_supported(netdev))
- ethtool_sprintf(&data, nfp_self_test[i].name);
+ ethtool_puts(&data, nfp_self_test[i].name);
}
static int nfp_get_self_test_count(struct net_device *netdev)
@@ -852,24 +852,24 @@ static u8 *nfp_vnic_get_sw_stats_strings(struct net_device *netdev, u8 *data)
ethtool_sprintf(&data, "rvec_%u_tx_busy", i);
}
- ethtool_sprintf(&data, "hw_rx_csum_ok");
- ethtool_sprintf(&data, "hw_rx_csum_inner_ok");
- ethtool_sprintf(&data, "hw_rx_csum_complete");
- ethtool_sprintf(&data, "hw_rx_csum_err");
- ethtool_sprintf(&data, "rx_replace_buf_alloc_fail");
- ethtool_sprintf(&data, "rx_tls_decrypted_packets");
- ethtool_sprintf(&data, "hw_tx_csum");
- ethtool_sprintf(&data, "hw_tx_inner_csum");
- ethtool_sprintf(&data, "tx_gather");
- ethtool_sprintf(&data, "tx_lso");
- ethtool_sprintf(&data, "tx_tls_encrypted_packets");
- ethtool_sprintf(&data, "tx_tls_ooo");
- ethtool_sprintf(&data, "tx_tls_drop_no_sync_data");
-
- ethtool_sprintf(&data, "hw_tls_no_space");
- ethtool_sprintf(&data, "rx_tls_resync_req_ok");
- ethtool_sprintf(&data, "rx_tls_resync_req_ign");
- ethtool_sprintf(&data, "rx_tls_resync_sent");
+ ethtool_puts(&data, "hw_rx_csum_ok");
+ ethtool_puts(&data, "hw_rx_csum_inner_ok");
+ ethtool_puts(&data, "hw_rx_csum_complete");
+ ethtool_puts(&data, "hw_rx_csum_err");
+ ethtool_puts(&data, "rx_replace_buf_alloc_fail");
+ ethtool_puts(&data, "rx_tls_decrypted_packets");
+ ethtool_puts(&data, "hw_tx_csum");
+ ethtool_puts(&data, "hw_tx_inner_csum");
+ ethtool_puts(&data, "tx_gather");
+ ethtool_puts(&data, "tx_lso");
+ ethtool_puts(&data, "tx_tls_encrypted_packets");
+ ethtool_puts(&data, "tx_tls_ooo");
+ ethtool_puts(&data, "tx_tls_drop_no_sync_data");
+
+ ethtool_puts(&data, "hw_tls_no_space");
+ ethtool_puts(&data, "rx_tls_resync_req_ok");
+ ethtool_puts(&data, "rx_tls_resync_req_ign");
+ ethtool_puts(&data, "rx_tls_resync_sent");
return data;
}
@@ -943,13 +943,13 @@ nfp_vnic_get_hw_stats_strings(u8 *data, unsigned int num_vecs, bool repr)
swap_off = repr * NN_ET_SWITCH_STATS_LEN;
for (i = 0; i < NN_ET_SWITCH_STATS_LEN; i++)
- ethtool_sprintf(&data, nfp_net_et_stats[i + swap_off].name);
+ ethtool_puts(&data, nfp_net_et_stats[i + swap_off].name);
for (i = NN_ET_SWITCH_STATS_LEN; i < NN_ET_SWITCH_STATS_LEN * 2; i++)
- ethtool_sprintf(&data, nfp_net_et_stats[i - swap_off].name);
+ ethtool_puts(&data, nfp_net_et_stats[i - swap_off].name);
for (i = NN_ET_SWITCH_STATS_LEN * 2; i < NN_ET_GLOBAL_STATS_LEN; i++)
- ethtool_sprintf(&data, nfp_net_et_stats[i].name);
+ ethtool_puts(&data, nfp_net_et_stats[i].name);
for (i = 0; i < num_vecs; i++) {
ethtool_sprintf(&data, "rxq_%u_pkts", i);
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_stats.c b/drivers/net/ethernet/pensando/ionic/ionic_stats.c
index 9859a4432985..1f6022fb7679 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_stats.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_stats.c
@@ -258,10 +258,10 @@ static void ionic_sw_stats_get_strings(struct ionic_lif *lif, u8 **buf)
int i, q_num;
for (i = 0; i < IONIC_NUM_LIF_STATS; i++)
- ethtool_sprintf(buf, ionic_lif_stats_desc[i].name);
+ ethtool_puts(buf, ionic_lif_stats_desc[i].name);
for (i = 0; i < IONIC_NUM_PORT_STATS; i++)
- ethtool_sprintf(buf, ionic_port_stats_desc[i].name);
+ ethtool_puts(buf, ionic_port_stats_desc[i].name);
for (q_num = 0; q_num < MAX_Q(lif); q_num++)
ionic_sw_stats_get_tx_strings(lif, buf, q_num);
diff --git a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
index ddc5f6d20b9c..6e9e5f01c152 100644
--- a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
+++ b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
@@ -75,7 +75,7 @@ void wx_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
switch (stringset) {
case ETH_SS_STATS:
for (i = 0; i < WX_GLOBAL_STATS_LEN; i++)
- ethtool_sprintf(&p, wx_gstrings_stats[i].stat_string);
+ ethtool_puts(&p, wx_gstrings_stats[i].stat_string);
for (i = 0; i < netdev->num_tx_queues; i++) {
ethtool_sprintf(&p, "tx_queue_%u_packets", i);
ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 706ea5263e87..1e2fa0ec2327 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -1582,10 +1582,10 @@ static void netvsc_get_strings(struct net_device *dev, u32 stringset, u8 *data)
switch (stringset) {
case ETH_SS_STATS:
for (i = 0; i < ARRAY_SIZE(netvsc_stats); i++)
- ethtool_sprintf(&p, netvsc_stats[i].name);
+ ethtool_puts(&p, netvsc_stats[i].name);
for (i = 0; i < ARRAY_SIZE(vf_stats); i++)
- ethtool_sprintf(&p, vf_stats[i].name);
+ ethtool_puts(&p, vf_stats[i].name);
for (i = 0; i < nvdev->num_chn; i++) {
ethtool_sprintf(&p, "tx_queue_%u_packets", i);
diff --git a/drivers/net/phy/nxp-tja11xx.c b/drivers/net/phy/nxp-tja11xx.c
index a71399965142..2c263ae44b4f 100644
--- a/drivers/net/phy/nxp-tja11xx.c
+++ b/drivers/net/phy/nxp-tja11xx.c
@@ -415,7 +415,7 @@ static void tja11xx_get_strings(struct phy_device *phydev, u8 *data)
int i;
for (i = 0; i < ARRAY_SIZE(tja11xx_hw_stats); i++)
- ethtool_sprintf(&data, "%s", tja11xx_hw_stats[i].string);
+ ethtool_puts(&data, tja11xx_hw_stats[i].string);
}
static void tja11xx_get_stats(struct phy_device *phydev,
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
index 1c7306a1af13..150aea7c9c36 100644
--- a/drivers/net/phy/smsc.c
+++ b/drivers/net/phy/smsc.c
@@ -508,7 +508,7 @@ static void smsc_get_strings(struct phy_device *phydev, u8 *data)
int i;
for (i = 0; i < ARRAY_SIZE(smsc_hw_stats); i++)
- ethtool_sprintf(&data, "%s", smsc_hw_stats[i].string);
+ ethtool_puts(&data, smsc_hw_stats[i].string);
}
static u64 smsc_get_stat(struct phy_device *phydev, int i)
diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c
index 98c22d7d87a2..8f5f202cde39 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethtool.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c
@@ -245,20 +245,20 @@ vmxnet3_get_strings(struct net_device *netdev, u32 stringset, u8 *buf)
for (j = 0; j < adapter->num_tx_queues; j++) {
for (i = 0; i < ARRAY_SIZE(vmxnet3_tq_dev_stats); i++)
- ethtool_sprintf(&buf, vmxnet3_tq_dev_stats[i].desc);
+ ethtool_puts(&buf, vmxnet3_tq_dev_stats[i].desc);
for (i = 0; i < ARRAY_SIZE(vmxnet3_tq_driver_stats); i++)
- ethtool_sprintf(&buf, vmxnet3_tq_driver_stats[i].desc);
+ ethtool_puts(&buf, vmxnet3_tq_driver_stats[i].desc);
}
for (j = 0; j < adapter->num_rx_queues; j++) {
for (i = 0; i < ARRAY_SIZE(vmxnet3_rq_dev_stats); i++)
- ethtool_sprintf(&buf, vmxnet3_rq_dev_stats[i].desc);
+ ethtool_puts(&buf, vmxnet3_rq_dev_stats[i].desc);
for (i = 0; i < ARRAY_SIZE(vmxnet3_rq_driver_stats); i++)
- ethtool_sprintf(&buf, vmxnet3_rq_driver_stats[i].desc);
+ ethtool_puts(&buf, vmxnet3_rq_driver_stats[i].desc);
}
for (i = 0; i < ARRAY_SIZE(vmxnet3_global_stats); i++)
- ethtool_sprintf(&buf, vmxnet3_global_stats[i].desc);
+ ethtool_puts(&buf, vmxnet3_global_stats[i].desc);
}
netdev_features_t vmxnet3_fix_features(struct net_device *netdev,
--
2.43.0.rc2.451.g8631bc7472-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
@ 2023-12-07 7:12 ` Przemek Kitszel
2023-12-07 15:27 ` Andrew Lunn
2023-12-08 10:45 ` Madhuri.Sripada
2 siblings, 0 replies; 13+ messages in thread
From: Przemek Kitszel @ 2023-12-07 7:12 UTC (permalink / raw)
To: justinstitt, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Shay Agroskin, Arthur Kiyanovski, David Arinzon,
Noam Dagan, Saeed Bishara, Rasesh Mody, Sudarsana Kalluru,
GR-Linux-NIC-Dev, Dimitris Michailidis, Yisen Zhuang, Salil Mehta,
Jesse Brandeburg, Tony Nguyen, Louis Peens, Shannon Nelson,
Brett Creeley, drivers, K. Y. Srinivasan, Haiyang Zhang, Wei Liu,
Dexuan Cui, Ronak Doshi, VMware PV-Drivers Reviewers,
Andy Whitcroft, Joe Perches, Dwaipayan Ray, Lukas Bulwahn,
Hauke Mehrtens, Andrew Lunn, Florian Fainelli, Vladimir Oltean,
Arınç ÜNAL, Daniel Golle, Landen Chao,
DENG Qingfang, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, Linus Walleij, Alvin Šipraga,
Wei Fang, Shenwei Wang, Clark Wang, NXP Linux Team, Lars Povlsen,
Steen Hegelund, Daniel Machon, UNGLinuxDriver, Jiawen Wu,
Mengyuan Lou, Heiner Kallweit, Russell King, Alexei Starovoitov,
Daniel Borkmann, Jesper Dangaard Brouer, John Fastabend
Cc: linux-hyperv, Kees Cook, netdev, Nick Desaulniers, linux-kernel,
Nathan Chancellor, oss-drivers, intel-wired-lan, linux-mediatek,
bpf, linux-arm-kernel
On 12/7/23 00:16, justinstitt@google.com wrote:
> Use strscpy() to implement ethtool_puts().
>
> Functionally the same as ethtool_sprintf() when it's used with two
> arguments or with just "%s" format specifier.
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
> ---
> include/linux/ethtool.h | 13 +++++++++++++
> net/ethtool/ioctl.c | 7 +++++++
> 2 files changed, 20 insertions(+)
>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
@ 2023-12-07 7:19 ` Wei Fang
2023-12-07 15:28 ` Andrew Lunn
` (2 subsequent siblings)
3 siblings, 0 replies; 13+ messages in thread
From: Wei Fang @ 2023-12-07 7:19 UTC (permalink / raw)
To: justinstitt@google.com, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Shay Agroskin, Arthur Kiyanovski,
David Arinzon, Noam Dagan, Saeed Bishara, Rasesh Mody,
Sudarsana Kalluru, GR-Linux-NIC-Dev@marvell.com,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley,
drivers@pensando.io, K. Y. Srinivasan, Haiyang Zhang, Wei Liu,
Dexuan Cui, Ronak Doshi, VMware PV-Drivers Reviewers,
Andy Whitcroft, Joe Perches, Dwaipayan Ray, Lukas Bulwahn,
Hauke Mehrtens, Andrew Lunn, Florian Fainelli, Vladimir Oltean,
Arınç ÜNAL, Daniel Golle, Landen Chao,
DENG Qingfang, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, Linus Walleij, Alvin Šipraga,
Shenwei Wang, Clark Wang, dl-linux-imx, Lars Povlsen,
Steen Hegelund, Daniel Machon, UNGLinuxDriver@microchip.com,
Jiawen Wu, Mengyuan Lou, Heiner Kallweit, Russell King,
Alexei Starovoitov, Daniel Borkmann, Jesper Dangaard Brouer,
John Fastabend
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
Nick Desaulniers, Nathan Chancellor, Kees Cook,
intel-wired-lan@lists.osuosl.org, oss-drivers@corigine.com,
linux-hyperv@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, bpf@vger.kernel.org
> -----Original Message-----
> From: justinstitt@google.com <justinstitt@google.com>
> Sent: 2023年12月7日 7:16
> To: David S. Miller <davem@davemloft.net>; Eric Dumazet
> <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; Paolo Abeni
> <pabeni@redhat.com>; Shay Agroskin <shayagr@amazon.com>; Arthur
> Kiyanovski <akiyano@amazon.com>; David Arinzon
> <darinzon@amazon.com>; Noam Dagan <ndagan@amazon.com>; Saeed
> Bishara <saeedb@amazon.com>; Rasesh Mody <rmody@marvell.com>;
> Sudarsana Kalluru <skalluru@marvell.com>; GR-Linux-NIC-Dev@marvell.com;
> Dimitris Michailidis <dmichail@fungible.com>; Yisen Zhuang
> <yisen.zhuang@huawei.com>; Salil Mehta <salil.mehta@huawei.com>; Jesse
> Brandeburg <jesse.brandeburg@intel.com>; Tony Nguyen
> <anthony.l.nguyen@intel.com>; Louis Peens <louis.peens@corigine.com>;
> Shannon Nelson <shannon.nelson@amd.com>; Brett Creeley
> <brett.creeley@amd.com>; drivers@pensando.io; K. Y. Srinivasan
> <kys@microsoft.com>; Haiyang Zhang <haiyangz@microsoft.com>; Wei Liu
> <wei.liu@kernel.org>; Dexuan Cui <decui@microsoft.com>; Ronak Doshi
> <doshir@vmware.com>; VMware PV-Drivers Reviewers
> <pv-drivers@vmware.com>; Andy Whitcroft <apw@canonical.com>; Joe
> Perches <joe@perches.com>; Dwaipayan Ray <dwaipayanray1@gmail.com>;
> Lukas Bulwahn <lukas.bulwahn@gmail.com>; Hauke Mehrtens
> <hauke@hauke-m.de>; Andrew Lunn <andrew@lunn.ch>; Florian Fainelli
> <f.fainelli@gmail.com>; Vladimir Oltean <olteanv@gmail.com>; Arınç ÜNAL
> <arinc.unal@arinc9.com>; Daniel Golle <daniel@makrotopia.org>; Landen
> Chao <Landen.Chao@mediatek.com>; DENG Qingfang <dqfext@gmail.com>;
> Sean Wang <sean.wang@mediatek.com>; Matthias Brugger
> <matthias.bgg@gmail.com>; AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com>; Linus Walleij
> <linus.walleij@linaro.org>; Alvin Šipraga <alsi@bang-olufsen.dk>; Wei Fang
> <wei.fang@nxp.com>; Shenwei Wang <shenwei.wang@nxp.com>; Clark
> Wang <xiaoning.wang@nxp.com>; dl-linux-imx <linux-imx@nxp.com>; Lars
> Povlsen <lars.povlsen@microchip.com>; Steen Hegelund
> <Steen.Hegelund@microchip.com>; Daniel Machon
> <daniel.machon@microchip.com>; UNGLinuxDriver@microchip.com; Jiawen
> Wu <jiawenwu@trustnetic.com>; Mengyuan Lou
> <mengyuanlou@net-swift.com>; Heiner Kallweit <hkallweit1@gmail.com>;
> Russell King <linux@armlinux.org.uk>; Alexei Starovoitov <ast@kernel.org>;
> Daniel Borkmann <daniel@iogearbox.net>; Jesper Dangaard Brouer
> <hawk@kernel.org>; John Fastabend <john.fastabend@gmail.com>
> Cc: linux-kernel@vger.kernel.org; netdev@vger.kernel.org; Nick Desaulniers
> <ndesaulniers@google.com>; Nathan Chancellor <nathan@kernel.org>; Kees
> Cook <keescook@chromium.org>; intel-wired-lan@lists.osuosl.org;
> oss-drivers@corigine.com; linux-hyperv@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; linux-mediatek@lists.infradead.org;
> bpf@vger.kernel.org; Justin Stitt <justinstitt@google.com>
> Subject: [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to
> ethtool_puts()
>
> This patch converts some basic cases of ethtool_sprintf() to ethtool_puts().
>
> The conversions are used in cases where ethtool_sprintf() was being used
> with just two arguments:
> | ethtool_sprintf(&data, buffer[i].name);
> or when it's used with format string: "%s"
> | ethtool_sprintf(&data, "%s", buffer[i].name);
> which both now become:
> | ethtool_puts(&data, buffer[i].name);
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
> ---
> drivers/net/ethernet/freescale/fec_main.c | 4 +-
> diff --git a/drivers/net/ethernet/freescale/fec_main.c
> b/drivers/net/ethernet/freescale/fec_main.c
> index c3b7694a7485..bae9536de767 100644
> --- a/drivers/net/ethernet/freescale/fec_main.c
> +++ b/drivers/net/ethernet/freescale/fec_main.c
> @@ -2932,10 +2932,10 @@ static void fec_enet_get_strings(struct
> net_device *netdev,
> switch (stringset) {
> case ETH_SS_STATS:
> for (i = 0; i < ARRAY_SIZE(fec_stats); i++) {
> - ethtool_sprintf(&data, "%s", fec_stats[i].name);
> + ethtool_puts(&data, fec_stats[i].name);
> }
> for (i = 0; i < ARRAY_SIZE(fec_xdp_stat_strs); i++) {
> - ethtool_sprintf(&data, "%s", fec_xdp_stat_strs[i]);
> + ethtool_puts(&data, fec_xdp_stat_strs[i]);
> }
> page_pool_ethtool_stats_get_strings(data);
>
Reviewed-by: Wei Fang <wei.fang@nxp.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-wired-lan] [PATCH net-next v5 2/3] checkpatch: add ethtool_sprintf rules
2023-12-06 23:16 ` [PATCH net-next v5 2/3] checkpatch: add ethtool_sprintf rules justinstitt
@ 2023-12-07 7:39 ` Przemek Kitszel
0 siblings, 0 replies; 13+ messages in thread
From: Przemek Kitszel @ 2023-12-07 7:39 UTC (permalink / raw)
To: justinstitt, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Shay Agroskin, Arthur Kiyanovski, David Arinzon,
Noam Dagan, Saeed Bishara, Rasesh Mody, Sudarsana Kalluru,
GR-Linux-NIC-Dev, Dimitris Michailidis, Yisen Zhuang, Salil Mehta,
Jesse Brandeburg, Tony Nguyen, Louis Peens, Shannon Nelson,
Brett Creeley, drivers, K. Y. Srinivasan, Haiyang Zhang, Wei Liu,
Dexuan Cui, Ronak Doshi, VMware PV-Drivers Reviewers,
Andy Whitcroft, Joe Perches, Dwaipayan Ray, Lukas Bulwahn,
Hauke Mehrtens, Andrew Lunn, Florian Fainelli, Vladimir Oltean,
Arınç ÜNAL, Daniel Golle, Landen Chao,
DENG Qingfang, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, Linus Walleij, Alvin Šipraga,
Wei Fang, Shenwei Wang, Clark Wang, NXP Linux Team, Lars Povlsen,
Steen Hegelund, Daniel Machon, UNGLinuxDriver, Jiawen Wu,
Mengyuan Lou, Heiner Kallweit, Russell King, Alexei Starovoitov,
Daniel Borkmann, Jesper Dangaard Brouer, John Fastabend
Cc: linux-hyperv, Kees Cook, netdev, Nick Desaulniers, linux-kernel,
Nathan Chancellor, oss-drivers, intel-wired-lan, linux-mediatek,
bpf, linux-arm-kernel
On 12/7/23 00:16, justinstitt@google.com wrote:
> 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(+)
>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 25fdb7fda112..6924731110d8 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -7011,6 +7011,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)/;
(not related to the patch)
without deeper digging it was completely unclear why it is $7 for the
"second" capture group, turns out that FuncArg contains parens and other
vars with parens :~
> + }
> + }
> +
> +
> # typecasts on min/max could be min_t/max_t
> if ($perl_version_ok &&
> defined $stat &&
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
2023-12-07 7:12 ` [Intel-wired-lan] " Przemek Kitszel
@ 2023-12-07 15:27 ` Andrew Lunn
2023-12-08 10:45 ` Madhuri.Sripada
2 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2023-12-07 15:27 UTC (permalink / raw)
To: justinstitt
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Florian Fainelli,
Vladimir Oltean, Arınç ÜNAL, Daniel Golle,
Landen Chao, DENG Qingfang, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, Linus Walleij, Alvin Šipraga,
Wei Fang, Shenwei Wang, Clark Wang, NXP Linux Team, Lars Povlsen,
Steen Hegelund, Daniel Machon, UNGLinuxDriver, Jiawen Wu,
Mengyuan Lou, Heiner Kallweit, Russell King, Alexei Starovoitov,
Daniel Borkmann, Jesper Dangaard Brouer, John Fastabend,
linux-kernel, netdev, Nick Desaulniers, Nathan Chancellor,
Kees Cook, intel-wired-lan, oss-drivers, linux-hyperv,
linux-arm-kernel, linux-mediatek, bpf
On Wed, Dec 06, 2023 at 11:16:10PM +0000, justinstitt@google.com wrote:
> Use strscpy() to implement ethtool_puts().
>
> Functionally the same as ethtool_sprintf() when it's used with two
> arguments or with just "%s" format specifier.
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
2023-12-07 7:19 ` Wei Fang
@ 2023-12-07 15:28 ` Andrew Lunn
2023-12-08 6:33 ` Louis Peens
2023-12-08 11:03 ` Divya.Koppera
3 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2023-12-07 15:28 UTC (permalink / raw)
To: justinstitt
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Louis Peens, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Florian Fainelli,
Vladimir Oltean, Arınç ÜNAL, Daniel Golle,
Landen Chao, DENG Qingfang, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, Linus Walleij, Alvin Šipraga,
Wei Fang, Shenwei Wang, Clark Wang, NXP Linux Team, Lars Povlsen,
Steen Hegelund, Daniel Machon, UNGLinuxDriver, Jiawen Wu,
Mengyuan Lou, Heiner Kallweit, Russell King, Alexei Starovoitov,
Daniel Borkmann, Jesper Dangaard Brouer, John Fastabend,
linux-kernel, netdev, Nick Desaulniers, Nathan Chancellor,
Kees Cook, intel-wired-lan, oss-drivers, linux-hyperv,
linux-arm-kernel, linux-mediatek, bpf
On Wed, Dec 06, 2023 at 11:16:12PM +0000, justinstitt@google.com wrote:
> This patch converts some basic cases of ethtool_sprintf() to
> ethtool_puts().
>
> The conversions are used in cases where ethtool_sprintf() was being used
> with just two arguments:
> | ethtool_sprintf(&data, buffer[i].name);
> or when it's used with format string: "%s"
> | ethtool_sprintf(&data, "%s", buffer[i].name);
> which both now become:
> | ethtool_puts(&data, buffer[i].name);
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
2023-12-07 7:19 ` Wei Fang
2023-12-07 15:28 ` Andrew Lunn
@ 2023-12-08 6:33 ` Louis Peens
2023-12-08 11:03 ` Divya.Koppera
3 siblings, 0 replies; 13+ messages in thread
From: Louis Peens @ 2023-12-08 6:33 UTC (permalink / raw)
To: justinstitt
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
Saeed Bishara, Rasesh Mody, Sudarsana Kalluru, GR-Linux-NIC-Dev,
Dimitris Michailidis, Yisen Zhuang, Salil Mehta, Jesse Brandeburg,
Tony Nguyen, Shannon Nelson, Brett Creeley, drivers,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, Ronak Doshi,
VMware PV-Drivers Reviewers, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Lukas Bulwahn, Hauke Mehrtens, Andrew Lunn,
Florian Fainelli, Vladimir Oltean, Arınç ÜNAL,
Daniel Golle, Landen Chao, DENG Qingfang, Sean Wang,
Matthias Brugger, AngeloGioacchino Del Regno, Linus Walleij,
Alvin Šipraga, Wei Fang, Shenwei Wang, Clark Wang,
NXP Linux Team, Lars Povlsen, Steen Hegelund, Daniel Machon,
UNGLinuxDriver, Jiawen Wu, Mengyuan Lou, Heiner Kallweit,
Russell King, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, linux-kernel, netdev,
Nick Desaulniers, Nathan Chancellor, Kees Cook, intel-wired-lan,
oss-drivers, linux-hyperv, linux-arm-kernel, linux-mediatek, bpf
On Wed, Dec 06, 2023 at 11:16:12PM +0000, justinstitt@google.com wrote:
> This patch converts some basic cases of ethtool_sprintf() to
> ethtool_puts().
>
> The conversions are used in cases where ethtool_sprintf() was being used
> with just two arguments:
> | ethtool_sprintf(&data, buffer[i].name);
> or when it's used with format string: "%s"
> | ethtool_sprintf(&data, "%s", buffer[i].name);
> which both now become:
> | ethtool_puts(&data, buffer[i].name);
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
> ---
> drivers/net/dsa/lantiq_gswip.c | 2 +-
> drivers/net/dsa/mt7530.c | 2 +-
> drivers/net/dsa/qca/qca8k-common.c | 2 +-
> drivers/net/dsa/realtek/rtl8365mb.c | 2 +-
> drivers/net/dsa/realtek/rtl8366-core.c | 2 +-
> drivers/net/dsa/vitesse-vsc73xx-core.c | 8 +--
> drivers/net/ethernet/amazon/ena/ena_ethtool.c | 4 +-
> drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 2 +-
> drivers/net/ethernet/freescale/fec_main.c | 4 +-
> .../net/ethernet/fungible/funeth/funeth_ethtool.c | 8 +--
> drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 2 +-
> .../net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c | 2 +-
> drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 65 +++++++++++-----------
> drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 6 +-
> drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 3 +-
> drivers/net/ethernet/intel/ice/ice_ethtool.c | 9 +--
> drivers/net/ethernet/intel/idpf/idpf_ethtool.c | 2 +-
> drivers/net/ethernet/intel/igb/igb_ethtool.c | 6 +-
> drivers/net/ethernet/intel/igc/igc_ethtool.c | 6 +-
> drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 5 +-
> .../net/ethernet/microchip/sparx5/sparx5_ethtool.c | 2 +-
> .../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 44 +++++++--------
Still happy with the nfp parts, thanks:
Reviewed-by: Louis Peens <louis.peens@corigine.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
2023-12-07 7:12 ` [Intel-wired-lan] " Przemek Kitszel
2023-12-07 15:27 ` Andrew Lunn
@ 2023-12-08 10:45 ` Madhuri.Sripada
2 siblings, 0 replies; 13+ messages in thread
From: Madhuri.Sripada @ 2023-12-08 10:45 UTC (permalink / raw)
To: justinstitt, davem, edumazet, kuba, pabeni, shayagr, akiyano,
darinzon, ndagan, saeedb, rmody, skalluru, GR-Linux-NIC-Dev,
dmichail, yisen.zhuang, salil.mehta, jesse.brandeburg,
anthony.l.nguyen, louis.peens, shannon.nelson, brett.creeley,
drivers, kys, haiyangz, wei.liu, decui, doshir, pv-drivers, apw,
joe, dwaipayanray1, lukas.bulwahn, hauke, andrew, f.fainelli,
olteanv, arinc.unal, daniel, Landen.Chao, dqfext, sean.wang,
matthias.bgg, angelogioacchino.delregno, linus.walleij, alsi,
wei.fang, shenwei.wang, xiaoning.wang, linux-imx, Lars.Povlsen,
Steen.Hegelund, Daniel.Machon, UNGLinuxDriver, jiawenwu,
mengyuanlou, hkallweit1, linux, ast, daniel, hawk, john.fastabend
Cc: linux-kernel, netdev, ndesaulniers, nathan, keescook,
intel-wired-lan, oss-drivers, linux-hyperv, linux-arm-kernel,
linux-mediatek, bpf
> Use strscpy() to implement ethtool_puts().
>
> Functionally the same as ethtool_sprintf() when it's used with two arguments
> or with just "%s" format specifier.
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Madhuri Sripada <madhuri.sripada@microchip.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v5 0/3] ethtool: Add ethtool_puts()
2023-12-06 23:16 [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() justinstitt
` (2 preceding siblings ...)
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
@ 2023-12-08 11:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 13+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-12-08 11:00 UTC (permalink / raw)
To: Justin Stitt
Cc: davem, edumazet, kuba, pabeni, shayagr, akiyano, darinzon, ndagan,
saeedb, rmody, skalluru, GR-Linux-NIC-Dev, dmichail, yisen.zhuang,
salil.mehta, jesse.brandeburg, anthony.l.nguyen, louis.peens,
shannon.nelson, brett.creeley, drivers, kys, haiyangz, wei.liu,
decui, doshir, pv-drivers, apw, joe, dwaipayanray1, lukas.bulwahn,
hauke, andrew, f.fainelli, olteanv, arinc.unal, daniel,
Landen.Chao, dqfext, sean.wang, matthias.bgg,
angelogioacchino.delregno, linus.walleij, alsi, wei.fang,
shenwei.wang, xiaoning.wang, linux-imx, lars.povlsen,
Steen.Hegelund, daniel.machon, UNGLinuxDriver, jiawenwu,
mengyuanlou, hkallweit1, linux, ast, daniel, hawk, john.fastabend,
linux-kernel, netdev, ndesaulniers, nathan, keescook,
intel-wired-lan, oss-drivers, linux-hyperv, linux-arm-kernel,
linux-mediatek, bpf
Hello:
This series was applied to netdev/net-next.git (main)
by David S. Miller <davem@davemloft.net>:
On Wed, 06 Dec 2023 23:16:09 +0000 you wrote:
> Hi,
>
> This series aims to implement ethtool_puts() and send out a wave 1 of
> conversions from ethtool_sprintf(). There's also a checkpatch patch
> included to check for the cases listed below.
>
> This was sparked from recent discussion here [1]
>
> [...]
Here is the summary with links:
- [net-next,v5,1/3] ethtool: Implement ethtool_puts()
https://git.kernel.org/netdev/net-next/c/2a48c635fd9a
- [net-next,v5,2/3] checkpatch: add ethtool_sprintf rules
https://git.kernel.org/netdev/net-next/c/9b5f621cea6e
- [net-next,v5,3/3] net: Convert some ethtool_sprintf() to ethtool_puts()
https://git.kernel.org/netdev/net-next/c/e403cffff1a4
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts()
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
` (2 preceding siblings ...)
2023-12-08 6:33 ` Louis Peens
@ 2023-12-08 11:03 ` Divya.Koppera
3 siblings, 0 replies; 13+ messages in thread
From: Divya.Koppera @ 2023-12-08 11:03 UTC (permalink / raw)
To: justinstitt, davem, edumazet, kuba, pabeni, shayagr, akiyano,
darinzon, ndagan, saeedb, rmody, skalluru, GR-Linux-NIC-Dev,
dmichail, yisen.zhuang, salil.mehta, jesse.brandeburg,
anthony.l.nguyen, louis.peens, shannon.nelson, brett.creeley,
drivers, kys, haiyangz, wei.liu, decui, doshir, pv-drivers, apw,
joe, dwaipayanray1, lukas.bulwahn, hauke, andrew, f.fainelli,
olteanv, arinc.unal, daniel, Landen.Chao, dqfext, sean.wang,
matthias.bgg, angelogioacchino.delregno, linus.walleij, alsi,
wei.fang, shenwei.wang, xiaoning.wang, linux-imx, Lars.Povlsen,
Steen.Hegelund, Daniel.Machon, UNGLinuxDriver, jiawenwu,
mengyuanlou, hkallweit1, linux, ast, daniel, hawk, john.fastabend
Cc: linux-kernel, netdev, ndesaulniers, nathan, keescook,
intel-wired-lan, oss-drivers, linux-hyperv, linux-arm-kernel,
linux-mediatek, bpf
> This patch converts some basic cases of ethtool_sprintf() to ethtool_puts().
>
> The conversions are used in cases where ethtool_sprintf() was being used with
> just two arguments:
> | ethtool_sprintf(&data, buffer[i].name);
> or when it's used with format string: "%s"
> | ethtool_sprintf(&data, "%s", buffer[i].name);
> which both now become:
> | ethtool_puts(&data, buffer[i].name);
>
> Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Divya Koppera <divya.koppera@microchip.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-12-08 11:03 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-06 23:16 [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() justinstitt
2023-12-06 23:16 ` [PATCH net-next v5 1/3] ethtool: Implement ethtool_puts() justinstitt
2023-12-07 7:12 ` [Intel-wired-lan] " Przemek Kitszel
2023-12-07 15:27 ` Andrew Lunn
2023-12-08 10:45 ` Madhuri.Sripada
2023-12-06 23:16 ` [PATCH net-next v5 2/3] checkpatch: add ethtool_sprintf rules justinstitt
2023-12-07 7:39 ` [Intel-wired-lan] " Przemek Kitszel
2023-12-06 23:16 ` [PATCH net-next v5 3/3] net: Convert some ethtool_sprintf() to ethtool_puts() justinstitt
2023-12-07 7:19 ` Wei Fang
2023-12-07 15:28 ` Andrew Lunn
2023-12-08 6:33 ` Louis Peens
2023-12-08 11:03 ` Divya.Koppera
2023-12-08 11:00 ` [PATCH net-next v5 0/3] ethtool: Add ethtool_puts() patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).