Skip to content

Commit

Permalink
ibmvnic: fix empty firmware version and errors cleanup
Browse files Browse the repository at this point in the history
This patch makes sure that the firmware version is never NULL. Moreover,
it also performs some cleanup on the error messages.

Fixes: a107311 ("ibmvnic: fix firmware version when no firmware level
has been provided by the VIOS server")
Signed-off-by: Desnes A. Nunes do Rosario <desnesn@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Desnes Augusto Nunes do Rosario authored and David S. Miller committed Feb 6, 2018
1 parent 4a31a6b commit 21a2545
Showing 1 changed file with 4 additions and 10 deletions.
14 changes: 4 additions & 10 deletions drivers/net/ethernet/ibm/ibmvnic.c
Original file line number Diff line number Diff line change
Expand Up @@ -3286,7 +3286,7 @@ static void handle_vpd_rsp(union ibmvnic_crq *crq,
struct ibmvnic_adapter *adapter)
{
struct device *dev = &adapter->vdev->dev;
unsigned char *substr = NULL, *ptr = NULL;
unsigned char *substr = NULL;
u8 fw_level_len = 0;

memset(adapter->fw_version, 0, 32);
Expand All @@ -3306,10 +3306,6 @@ static void handle_vpd_rsp(union ibmvnic_crq *crq,
substr = strnstr(adapter->vpd->buff, "RM", adapter->vpd->len);
if (!substr) {
dev_info(dev, "Warning - No FW level has been provided in the VPD buffer by the VIOS Server\n");
ptr = strncpy((char *)adapter->fw_version, "N/A",
3 * sizeof(char));
if (!ptr)
dev_err(dev, "Failed to inform that firmware version is unavailable to the adapter\n");
goto complete;
}

Expand All @@ -3324,16 +3320,14 @@ static void handle_vpd_rsp(union ibmvnic_crq *crq,
/* copy firmware version string from vpd into adapter */
if ((substr + 3 + fw_level_len) <
(adapter->vpd->buff + adapter->vpd->len)) {
ptr = strncpy((char *)adapter->fw_version,
substr + 3, fw_level_len);

if (!ptr)
dev_err(dev, "Failed to isolate FW level string\n");
strncpy((char *)adapter->fw_version, substr + 3, fw_level_len);
} else {
dev_info(dev, "FW substr extrapolated VPD buff\n");
}

complete:
if (adapter->fw_version[0] == '\0')
strncpy((char *)adapter->fw_version, "N/A", 3 * sizeof(char));
complete(&adapter->fw_done);
}

Expand Down

0 comments on commit 21a2545

Please sign in to comment.