[SCSI] gdth: Remove buggy ROM handling
authorBjorn Helgaas <bhelgaas@google.com>
Tue, 6 Nov 2012 22:04:44 +0000 (15:04 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Tue, 29 Jan 2013 02:55:06 +0000 (13:55 +1100)
commit8108de9739abeec72f4811532109695e245df42a
treed7561a7747deee5ffb61e2a83c5c907a2b5d60f2
parentf94d4fe0b5bbe8385245a1d9ef11d785c05df0da
[SCSI] gdth: Remove buggy ROM handling

The ROM address handling in gdth_init_pci() is useless and possibly
dangerous.  This patch removes it.

"pci_resource_start(pdev, 8)" is not well-defined.  PCI resources 0-5 are
standard PCI BARs and 6 is the expansion ROM.  Resource 8 is either an
SR-IOV BAR (if CONFIG_PCI_IOV=y, resources 7-12 are SR-IOV BARs) or a
bridge window (resources 7-10).

The GDT device is neither an SR-IOV device nor a bridge, so in either case
resource 8 should be zero since struct pci_dev is allocated with kzalloc().

It is illegal for a driver to write an arbitrary address to the ROM BAR
because it has no way of knowing whether the ROM will conflict with another
device.

I think the only effect of the code being removed was to:

  1) Enable the ROM at 0xFEFF0000 (possibly causing a conflict with
     another device)
  2) Delay one millisecond
  3) Write zero to the ROM BAR, disabling it

I doubt the delay is needed, but I left it since it seems innocuous.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/gdth.c