Jiri Slaby wrote: >Rolf Eike Beer napsal(a): >>Signed-off-by: Rolf Eike Beer <eike-kernel@xxxxxxxxx> >> >>--- a/drivers/scsi/cpqfcTSinit.c 2005-08-14 14:20:40.000000000 +0200 >>+++ b/drivers/scsi/cpqfcTSinit.c 2005-08-14 14:25:33.000000000 +0200 >>@@ -264,18 +264,14 @@ static void launch_FCworker_thread(struc >> * Agilent XL2 >> * HP Tachyon >> */ >>-#define HBA_TYPES 3 >>- >>-#ifndef PCI_DEVICE_ID_COMPAQ_ >>-#define PCI_DEVICE_ID_COMPAQ_TACHYON 0xa0fc >>-#endif >>- >>-static struct SupportedPCIcards cpqfc_boards[] __initdata = { >>- {PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_TACHYON}, >>- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHLITE}, >>- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHYON}, >>+static struct pci_device_id cpqfc_boards[] __initdata = { >>+ {PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_TACHYON, PCI_ANY_ID, >> PCI_ANY_ID, 0, 0, 0}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHLITE, >> PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {PCI_VENDOR_ID_HP, >> PCI_DEVICE_ID_HP_TACHYON, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {0, } >> }; > >Wouldn't be better to use PCI_DEVICE macro for better readability? Yes, useful little thing. Thanks, I wasn't aware of it. >>+MODULE_DEVICE_TABLE(pci, cpqfc_boards); >> >> int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate) >> { >>@@ -294,14 +290,9 @@ int cpqfcTS_detect(Scsi_Host_Template *S >> ScsiHostTemplate->proc_name = "cpqfcTS"; >> #endif >> >>- for( i=0; i < HBA_TYPES; i++) >>- { >>- // look for all HBAs of each type >>- >>- while((PciDev = pci_find_device(cpqfc_boards[i].vendor_id, >>- cpqfc_boards[i].device_id, PciDev))) >>- { >>- >>+ for(i = 0; cpqfc_boards[i]; i++) { >>+ while((PciDev = pci_get_device(cpqfc_boards[i].vendor, >>+ cpqfc_boards[i].device, PciDev))) { >> if (pci_enable_device(PciDev)) { >> printk(KERN_ERR >> "cpqfc: can't enable PCI device at %s\n", pci_name(PciDev)); > >You maybe forgot to add pci_dev_put in error cases. No, all errors will result in next iteration of this loop. Anyway this function should be rewritten. Once I figure out how to do the correct register stuff for SCSI drivers I'll port this over to Linux 2.6 driver model. Then this loop will go away. >You can inspire yourself here: >http://www.fi.muni.cz/~xslaby/lnx/pci_find/drivers:scsi:cpqfcTSinit.c.txt >(it wasn't accepted yet). *g* I've done such patches more than once ;) >BTW. Greg KH wants me to cc him, if some of these changes are being done. I read that, yes. But I had reasons not to CC him. This change is more or less to prevent others touching this file ;) Eike P.S.: your host is listed in cbl.abuseat.org. You should go and check this. Either you have a dynamic IP used by someone dumb before (than you have to ask them for delisting) or you probably have some sort of security hole.
Attachment:
pgpoVzAR1MAYS.pgp
Description: PGP signature