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>
This commit is contained in:
parent
f240e15097
commit
8d6ab5c5ac
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user