PCI: Fail pci_map_rom() if the option ROM is invalid
If we detect a invalid PCI option ROM (e.g., invalid ROM header signature), we should unmap it immediately and fail. It doesn't make any sense to return a mapped area with size of 0. I have seen this case on Intel GVTg vGPU, which has no VBIOS. It will not cause a real problem, but we should skip it as early as possible. Signed-off-by: Changbin Du <changbin.du@intel.com> [bhelgaas: split non-functional change into separate patch] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
a48a687d8c
commit
a405f191f4
|
@ -156,8 +156,13 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
|
||||||
* True size is important if the ROM is going to be copied.
|
* True size is important if the ROM is going to be copied.
|
||||||
*/
|
*/
|
||||||
*size = pci_get_rom_size(pdev, rom, *size);
|
*size = pci_get_rom_size(pdev, rom, *size);
|
||||||
|
if (!*size)
|
||||||
|
goto invalid_rom;
|
||||||
|
|
||||||
return rom;
|
return rom;
|
||||||
|
|
||||||
|
invalid_rom:
|
||||||
|
iounmap(rom);
|
||||||
err_ioremap:
|
err_ioremap:
|
||||||
/* restore enable if ioremap fails */
|
/* restore enable if ioremap fails */
|
||||||
if (!(res->flags & IORESOURCE_ROM_ENABLE))
|
if (!(res->flags & IORESOURCE_ROM_ENABLE))
|
||||||
|
|
Loading…
Reference in New Issue