pci_device_id is not guaranteed to live longer than probe due to presence
of dynamic ID. All information apart from driver_data can be easily
retrieved from pci_dev, so just store driver_data.

Reviewed-by: Danilo Krummrich <[email protected]>
Signed-off-by: Gary Guo <[email protected]>
---
 drivers/ata/ata_generic.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
index e70b6c089cf1..18ea740ca582 100644
--- a/drivers/ata/ata_generic.c
+++ b/drivers/ata/ata_generic.c
@@ -51,11 +51,11 @@ enum {
 static int generic_set_mode(struct ata_link *link, struct ata_device **unused)
 {
        struct ata_port *ap = link->ap;
-       const struct pci_device_id *id = ap->host->private_data;
+       unsigned long driver_data = (unsigned long)ap->host->private_data;
        int dma_enabled = 0;
        struct ata_device *dev;
 
-       if (id->driver_data & ATA_GEN_FORCE_DMA) {
+       if (driver_data & ATA_GEN_FORCE_DMA) {
                dma_enabled = 0xff;
        } else if (ap->ioaddr.bmdma_addr) {
                /* Bits 5 and 6 indicate if DMA is active on master/slave */
@@ -206,7 +206,7 @@ static int ata_generic_init_one(struct pci_dev *dev, const 
struct pci_device_id
                        return rc;
                pcim_pin_device(dev);
        }
-       return ata_pci_bmdma_init_one(dev, ppi, &generic_sht, (void *)id, 0);
+       return ata_pci_bmdma_init_one(dev, ppi, &generic_sht, (void 
*)id->driver_data, 0);
 }
 
 static const struct pci_device_id ata_generic[] = {

-- 
2.54.0

Reply via email to