Re: [PATCH 2.6.13-rc6] MODULE_DEVICE_TABLE for cpqfcTS driver

From: Rolf Eike Beer
Date: Tue Aug 16 2005 - 08:56:37 EST


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: pgp00000.pgp
Description: PGP signature