The benet driver copies both fw_ver (32 bytes) and fw_on_flash (32 bytes) into ethtool_drvinfo->fw_version (32 bytes), leading to a potential string truncation warning when built with W=1. Store fw_on_flash in ethtool_drvinfo->erom_version instead, which some drivers use to report secondary firmware information. Signed-off-by: Ankan Biswas --- drivers/net/ethernet/emulex/benet/be_ethtool.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c index f9216326bdfe..752f838f1abf 100644 --- a/drivers/net/ethernet/emulex/benet/be_ethtool.c +++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c @@ -221,12 +221,20 @@ static void be_get_drvinfo(struct net_device *netdev, struct be_adapter *adapter = netdev_priv(netdev); strscpy(drvinfo->driver, DRV_NAME, sizeof(drvinfo->driver)); - if (!memcmp(adapter->fw_ver, adapter->fw_on_flash, FW_VER_LEN)) + if (!memcmp(adapter->fw_ver, adapter->fw_on_flash, FW_VER_LEN)) { strscpy(drvinfo->fw_version, adapter->fw_ver, sizeof(drvinfo->fw_version)); - else - snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), - "%s [%s]", adapter->fw_ver, adapter->fw_on_flash); + + } else { + strscpy(drvinfo->fw_version, adapter->fw_ver, + sizeof(drvinfo->fw_version)); + + /* + * Report fw_on_flash in ethtool's erom_version field. + */ + strscpy(drvinfo->erom_version, adapter->fw_on_flash, + sizeof(drvinfo->erom_version)); + } strscpy(drvinfo->bus_info, pci_name(adapter->pdev), sizeof(drvinfo->bus_info)); -- 2.51.1