[libata] Fix oops introduced in non-uniform port handling fix
authorJeff Garzik <jeff@garzik.org>
Tue, 26 Sep 2006 01:56:33 +0000 (21:56 -0400)
committerJeff Garzik <jeff@garzik.org>
Tue, 26 Sep 2006 01:56:33 +0000 (21:56 -0400)
Noticed by several people.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/sata_nv.c
drivers/ata/sata_sis.c
drivers/ata/sata_uli.c
drivers/ata/sata_via.c

index 27c22feebf306170ea278000637548ec9c1b1993..8cd730fe5dd3ecf1527193c3af4049c7e80b25e2 100644 (file)
@@ -484,7 +484,7 @@ static void nv_error_handler(struct ata_port *ap)
 static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
 {
        static int printed_version = 0;
-       struct ata_port_info *ppi;
+       struct ata_port_info *ppi[2];
        struct ata_probe_ent *probe_ent;
        int pci_dev_busy = 0;
        int rc;
@@ -520,8 +520,8 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
 
        rc = -ENOMEM;
 
-       ppi = &nv_port_info[ent->driver_data];
-       probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
+       ppi[0] = ppi[1] = &nv_port_info[ent->driver_data];
+       probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
        if (!probe_ent)
                goto err_out_regions;
 
index 9b17375d8056fe16e0f9b877d00091dfda7885eb..18d49fff8dc4a2c7dde945b045f95b2b686499ff 100644 (file)
@@ -240,7 +240,7 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
        struct ata_probe_ent *probe_ent = NULL;
        int rc;
        u32 genctl;
-       struct ata_port_info *ppi;
+       struct ata_port_info *ppi[2];
        int pci_dev_busy = 0;
        u8 pmr;
        u8 port2_start;
@@ -265,8 +265,8 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
        if (rc)
                goto err_out_regions;
 
-       ppi = &sis_port_info;
-       probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
+       ppi[0] = ppi[1] = &sis_port_info;
+       probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
        if (!probe_ent) {
                rc = -ENOMEM;
                goto err_out_regions;
index 8fc6e800011a7c9a5c0cafcdcb025a4cd647554c..dd76f37be182a61b41676891a99cd471f1d343b8 100644 (file)
@@ -185,7 +185,7 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
 {
        static int printed_version;
        struct ata_probe_ent *probe_ent;
-       struct ata_port_info *ppi;
+       struct ata_port_info *ppi[2];
        int rc;
        unsigned int board_idx = (unsigned int) ent->driver_data;
        int pci_dev_busy = 0;
@@ -211,8 +211,8 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
        if (rc)
                goto err_out_regions;
 
-       ppi = &uli_port_info;
-       probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
+       ppi[0] = ppi[1] = &uli_port_info;
+       probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
        if (!probe_ent) {
                rc = -ENOMEM;
                goto err_out_regions;
index 7f087aef99de25a0838c063bccb462a1626d955a..a72a2389a11c0c88dd62f6437984d012883b1b52 100644 (file)
@@ -318,9 +318,10 @@ static void vt6421_init_addrs(struct ata_probe_ent *probe_ent,
 static struct ata_probe_ent *vt6420_init_probe_ent(struct pci_dev *pdev)
 {
        struct ata_probe_ent *probe_ent;
-       struct ata_port_info *ppi = &vt6420_port_info;
-
-       probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
+       struct ata_port_info *ppi[2];
+       
+       ppi[0] = ppi[1] = &vt6420_port_info;
+       probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
        if (!probe_ent)
                return NULL;