diff options
| author | Heiner Kallweit <hkallweit1@gmail.com> | 2021-08-18 21:05:26 +0200 | 
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2021-08-20 15:49:01 -0500 | 
| commit | 8d6ab5c5accd1a808b51a69bafa441cedf66006f (patch) | |
| tree | 017f34c480e9a636a6d845349a9e61bf832f0b7f | |
| parent | f240e15097c5004811a58f2cbc170bf90d06d0a9 (diff) | |
tg3: Validate VPD checksum with pci_vpd_check_csum()
Validate the VPD checksum with pci_vpd_check_csum() to simplify the code.
Link: https://lore.kernel.org/r/7297fce9-47db-3b86-366e-10b9ef43beaf@gmail.com
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
| -rw-r--r-- | drivers/net/ethernet/broadcom/tg3.c | 31 | 
1 files changed, 4 insertions, 27 deletions
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 779b1009da1c..7bf16c1925cc 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -13010,33 +13010,10 @@ static int tg3_test_nvram(struct tg3 *tp)  	if (!buf)  		return -ENOMEM; -	i = pci_vpd_find_tag((u8 *)buf, len, PCI_VPD_LRDT_RO_DATA); -	if (i > 0) { -		j = pci_vpd_lrdt_size(&((u8 *)buf)[i]); -		if (j < 0) -			goto out; - -		if (i + PCI_VPD_LRDT_TAG_SIZE + j > len) -			goto out; - -		i += PCI_VPD_LRDT_TAG_SIZE; -		j = pci_vpd_find_info_keyword((u8 *)buf, i, j, -					      PCI_VPD_RO_KEYWORD_CHKSUM); -		if (j > 0) { -			u8 csum8 = 0; - -			j += PCI_VPD_INFO_FLD_HDR_SIZE; - -			for (i = 0; i <= j; i++) -				csum8 += ((u8 *)buf)[i]; - -			if (csum8) -				goto out; -		} -	} - -	err = 0; - +	err = pci_vpd_check_csum(buf, len); +	/* go on if no checksum found */ +	if (err == 1) +		err = 0;  out:  	kfree(buf);  	return err;  | 
