Changeset 520 for GPL/trunk/lib32/pci.c


Ignore:
Timestamp:
Jul 21, 2010, 5:13:17 PM (15 years ago)
Author:
David Azarewicz
Message:

pci dereg fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk/lib32/pci.c

    r518 r520  
    547547{
    548548        struct pci_dev *pcidev;
    549         int i = 0, j;
    550 
    551         while(driver->id_table[i].vendor)
    552         {
    553                 for(j=0;j<MAX_PCI_DEVICES;j++)
    554                 {
    555                         if(pci_devices[j].vendor == driver->id_table[i].vendor &&
    556                            pci_devices[j].device == driver->id_table[i].device)
    557                         {
    558                                 if(driver->remove) {
    559                                         driver->remove(&pci_devices[j]);
    560                                 }
    561                         }
    562                 }
    563                 i++;
     549        int i, j;
     550
     551        for (i=0; driver->id_table[i].vendor; i++) {
     552                for(j=0; j<MAX_PCI_DEVICES; j++) {
     553                        pcidev = &pci_devices[j];
     554                        if (pcidev->devfn == 0) continue;
     555                        if(pcidev->vendor != driver->id_table[i].vendor) continue;
     556                        if ( (driver->id_table[i].device != PCI_ANY_ID) && (pcidev->device != driver->id_table[i].device) ) continue;
     557                        dprintf(("pci unreg match: %x:%x %x:%x", pci_devices[j].vendor, pci_devices[j].device, driver->id_table[i].vendor, driver->id_table[i].device));
     558                        if(!driver->remove) continue;
     559                        driver->remove(pcidev);
     560                }
    564561        }
    565562        return 0;
Note: See TracChangeset for help on using the changeset viewer.