aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/rom.c
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2018-06-05 09:46:46 +0800
committerBjorn Helgaas <bhelgaas@google.com>2018-06-29 21:16:23 -0500
commitbeced88e6af43c9653cee09f5111ae7495824e07 (patch)
tree26075954aeafea92c7c2dda3845b1ba2709e8bda /drivers/pci/rom.c
parentPCI: Avoid accessing memory outside the ROM BAR (diff)
downloadlinux-dev-beced88e6af43c9653cee09f5111ae7495824e07.tar.xz
linux-dev-beced88e6af43c9653cee09f5111ae7495824e07.zip
PCI: Add check code for last image indicator not set
If the "last image" indicator was not set in the PCI data struct, print "No more image in the PCI ROM" instead of looping back and printing "Invalid PCI ROM header signature". Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/pci/rom.c')
-rw-r--r--drivers/pci/rom.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pci/rom.c b/drivers/pci/rom.c
index 946795fc0071..3a33f5ce314a 100644
--- a/drivers/pci/rom.c
+++ b/drivers/pci/rom.c
@@ -108,6 +108,12 @@ size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size)
/* Avoid iterating through memory outside the resource window */
if (image >= rom + size)
break;
+ if (!last_image) {
+ if (readw(image) != 0xAA55) {
+ pci_info(pdev, "No more image in the PCI ROM\n");
+ break;
+ }
+ }
} while (length && !last_image);
/* never return a size larger than the PCI resource window */