]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
isci: fix oem parameter validation on single controller skus
authorDan Williams <dan.j.williams@intel.com>
Mon, 30 Apr 2012 18:57:44 +0000 (11:57 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Jun 2012 07:13:00 +0000 (15:13 +0800)
commit fc25f79af321c01a739150ba2c09435cf977a63d upstream.

OEM parameters [1] are parsed from the platform option-rom / efi
driver.  By default the driver was validating the parameters for the
dual-controller case, but in single-controller case only the first set
of parameters may be valid.

Limit the validation to the number of actual controllers detected
otherwise the driver may fail to parse the valid parameters leading to
driver-load or runtime failures.

[1] the platform specific set of phy address, configuration,and analog
    tuning values

Reported-by: Dave Jiang <dave.jiang@intel.com>
Tested-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/isci/init.c

index 61e0d09e2b57950dc47f875a782f58941f42495a..71b57ec3d9340976e049f5bf6bc27020bf92e4e3 100644 (file)
@@ -454,7 +454,7 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
        if (!orom)
                orom = isci_request_oprom(pdev);
 
-       for (i = 0; orom && i < ARRAY_SIZE(orom->ctrl); i++) {
+       for (i = 0; orom && i < num_controllers(pdev); i++) {
                if (sci_oem_parameters_validate(&orom->ctrl[i])) {
                        dev_warn(&pdev->dev,
                                 "[%d]: invalid oem parameters detected, falling back to firmware\n", i);