Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21a2545b authored by Desnes Augusto Nunes do Rosario's avatar Desnes Augusto Nunes do Rosario Committed by David S. Miller
Browse files

ibmvnic: fix empty firmware version and errors cleanup



This patch makes sure that the firmware version is never NULL. Moreover,
it also performs some cleanup on the error messages.

Fixes: a107311d ("ibmvnic: fix firmware version when no firmware level
has been provided by the VIOS server")
Signed-off-by: default avatarDesnes A. Nunes do Rosario <desnesn@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4a31a6b1
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -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);
@@ -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;
	}

@@ -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);
}