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". Note that I have some outstanding patches [2] (some picked up) that use the second case of ethtool_sprintf(). I went with this approach to clean up some strncpy() uses and avoid -Wformat-security warnings before discussion about implementing ...puts() arose. I will probably let the ones that have been picked up land but send new versions for others. Wave 1 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) @replace_2_args@ identifier BUF; expression VAR; @@ - ethtool_sprintf + ethtool_puts (&BUF, VAR) @replace_3_args@ identifier BUF; expression VAR; @@ - ethtool_sprintf(&BUF, "%s", VAR) + ethtool_puts(&BUF, VAR) [5]: $ rg "ethtool_sprintf\(\s*[^,)]+\s*,\s*[^,)]+\s*\)" Signed-off-by: Justin Stitt <justinstitt@xxxxxxxxxx> --- Justin Stitt (3): ethtool: Implement ethtool_puts() treewide: Convert some ethtool_sprintf() to ethtool_puts() checkpatch: add ethtool_sprintf rules drivers/net/ethernet/amazon/ena/ena_ethtool.c | 4 +- drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 2 +- .../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 | 66 +++++++++++----------- drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 4 +- drivers/net/ethernet/intel/ice/ice_ethtool.c | 10 ++-- 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/netronome/nfp/nfp_net_ethtool.c | 44 +++++++-------- drivers/net/ethernet/pensando/ionic/ionic_stats.c | 4 +- drivers/net/hyperv/netvsc_drv.c | 4 +- drivers/net/vmxnet3/vmxnet3_ethtool.c | 10 ++-- include/linux/ethtool.h | 13 +++++ net/ethtool/ioctl.c | 7 +++ scripts/checkpatch.pl | 13 +++++ 18 files changed, 120 insertions(+), 90 deletions(-) --- base-commit: d88520ad73b79e71e3ddf08de335b8520ae41c5c change-id: 20231025-ethtool_puts_impl-a1479ffbc7e0 Best regards, -- Justin Stitt <justinstitt@xxxxxxxxxx>