linux/drivers/pci
Michel Dänzer 9ada148d27 PCI: Fix infinite loop with ROM image of size 0
commit 16b036af31 upstream.

If the image size would ever read as 0, pci_get_rom_size() could keep
processing the same image over and over again.  Exit the loop if we ever
read a length of zero.

This fixes a soft lockup on boot when the radeon driver calls
pci_get_rom_size() on an AMD Radeon R7 250X PCIe discrete graphics card.

[bhelgaas: changelog, reference]
Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1386973
Reported-by: Federico <federicotg@gmail.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-03-06 14:52:46 -08:00
..
host PCI: designware: Reject MSI-X IRQs 2015-02-11 15:00:50 +08:00
hotplug Revert duplicate "PCI: pciehp: Prevent NULL dereference during probe" 2014-10-27 11:42:43 -06:00
pcie PCI / PM: handle failure to enable wakeup on PCIe PME 2014-10-23 22:47:28 +02:00
access.c PCI: Apply _HPX Link Control settings to all devices with a link 2014-11-13 15:43:42 -07:00
ats.c PCI: Removed unused parts of Page Request Interface support 2014-01-10 14:00:47 -07:00
bus.c PCI: Add pci_bus_clip_resource() to clip to fit upstream window 2015-01-29 17:40:43 -08:00
host-bridge.c PCI: Remove unnecessary includes of <linux/init.h> 2014-04-14 16:12:37 -06:00
hotplug-pci.c PCI: Remove unnecessary __ref annotations 2014-04-29 17:36:44 -06:00
htirq.c PCI changes for the v3.16 merge window (part 2): 2014-06-12 13:20:24 -07:00
ioapic.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
iov.c PCI: Use device flag helper functions 2014-09-16 16:19:58 -06:00
irq.c PCI: Fix whitespace, capitalization, and spelling errors 2013-11-14 11:28:18 -07:00
Kconfig PCI: Convert ioapic to be builtin only, not modular 2014-01-03 14:31:38 -07:00
Makefile Merge branch 'x86-nuke-platforms-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-04-02 13:15:58 -07:00
msi.c PCI/MSI: Add device flag indicating that 64-bit MSIs don't work 2014-11-24 14:11:34 +11:00
of.c PCI: OF: Don't crash when bridge parent is NULL. 2011-08-19 08:51:37 -07:00
pci-acpi.c PCI: Shuffle pci-acpi.c functions to group them logically 2014-09-12 20:01:38 -06:00
pci-driver.c PCI: Generate uppercase hex for modalias var in uevent 2015-03-06 14:52:46 -08:00
pci-label.c ACPI / PCI: Fix sysfs acpi_index and label errors 2014-07-02 15:27:08 -06:00
pci-stub.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
pci-sysfs.c PCI: Rename sysfs 'enabled' file back to 'enable' 2014-10-30 11:17:10 -06:00
pci.c PCI: Add flag for devices where we can't use bus reset 2015-01-29 17:40:44 -08:00
pci.h PCI: Add pci_bus_clip_resource() to clip to fit upstream window 2015-01-29 17:40:43 -08:00
probe.c PCI: Restore detection of read-only BARs 2015-01-16 06:59:47 -08:00
proc.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
quirks.c PCI: Handle read-only BARs on AMD CS553x devices 2015-02-11 15:00:50 +08:00
remove.c Revert "PCI: Remove from bus_list and release resources in pci_release_dev()" 2014-02-01 10:24:31 -08:00
rom.c PCI: Fix infinite loop with ROM image of size 0 2015-03-06 14:52:46 -08:00
search.c PCI: Remove unused pci_find_upstream_pcie_bridge() 2014-09-22 14:46:13 -06:00
setup-bus.c PCI: Add pci_claim_bridge_resource() to clip window if necessary 2015-01-29 17:40:43 -08:00
setup-irq.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
setup-res.c PCI: Tidy resource assignment messages 2014-07-08 16:29:08 -06:00
slot.c VERIFY_OCTAL_PERMISSIONS: stricter checking for sysfs perms. 2014-03-24 12:21:00 +10:30
syscall.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
vc.c PCI: Rename PCI_VC_PORT_REG1/2 to PCI_VC_PORT_CAP1/2 2013-12-17 17:49:39 -07:00
vpd.c pci: Fix files needing export.h for EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:22 -04:00
xen-pcifront.c xen: remove DEFINE_XENBUS_DRIVER() macro 2014-10-06 10:27:57 +01:00