2007-09-13 00:47:26

by Kees Cook

[permalink] [raw]
Subject: [PATCH] usb: fix unterminated usn_device_id lists

This patch against 2.6.23-rc6 fixes a unterminated list of USB device ids.

Signed-off-by: Kees Cook <[email protected]>
---
linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c | 1 +
1 file changed, 1 insertion(+)
---
diff -urp -x '*.o' linux-2.6.23-rc6~/drivers/media/video/usbvision/usbvision-cards.c linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c
--- linux-2.6.23-rc6~/drivers/media/video/usbvision/usbvision-cards.c 2007-09-11 23:17:19.000000000 -0700
+++ linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c 2007-09-12 17:26:46.000000000 -0700
@@ -1081,6 +1081,7 @@ struct usb_device_id usbvision_table []
{ USB_DEVICE(0x2304, 0x0301), .driver_info=PINNA_LINX_VD_IN_CAB_PAL },
{ USB_DEVICE(0x2304, 0x0419), .driver_info=PINNA_PCTV_BUNGEE_PAL_FM },
{ USB_DEVICE(0x2400, 0x4200), .driver_info=HPG_WINTV },
+ { 0, },
};

MODULE_DEVICE_TABLE (usb, usbvision_table);


--
Kees Cook


2007-09-13 01:15:23

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH] usb: fix unterminated usn_device_id lists

Kees Cook wrote:
> This patch against 2.6.23-rc6 fixes a unterminated list of USB device ids.
>
> Signed-off-by: Kees Cook <[email protected]>
> ---
> linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c | 1 +
> 1 file changed, 1 insertion(+)
> ---
> diff -urp -x '*.o' linux-2.6.23-rc6~/drivers/media/video/usbvision/usbvision-cards.c linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c
> --- linux-2.6.23-rc6~/drivers/media/video/usbvision/usbvision-cards.c 2007-09-11 23:17:19.000000000 -0700
> +++ linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c 2007-09-12 17:26:46.000000000 -0700
> @@ -1081,6 +1081,7 @@ struct usb_device_id usbvision_table []
> { USB_DEVICE(0x2304, 0x0301), .driver_info=PINNA_LINX_VD_IN_CAB_PAL },
> { USB_DEVICE(0x2304, 0x0419), .driver_info=PINNA_PCTV_BUNGEE_PAL_FM },
> { USB_DEVICE(0x2400, 0x4200), .driver_info=HPG_WINTV },
> + { 0, },

FWIW I (and several drivers) tend to prefer the more clean version,

{ },

or even

{ }, /* terminate list */

Regards,

Jeff



2007-09-13 03:55:00

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH] usb: fix unterminated usn_device_id lists

Hi,

On Wed, Sep 12, 2007 at 09:15:07PM -0400, Jeff Garzik wrote:
>> + { 0, },
>
> FWIW I (and several drivers) tend to prefer the more clean version,
>
> { },
>
> or even
>
> { }, /* terminate list */

Ah, yes. I see that now in some of the other drivers. Should I re-send
this patch (and/or the other PCI patches)?

Thanks,

-Kees

--
Kees Cook

2007-09-13 04:02:31

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH] usb: fix unterminated usn_device_id lists

Kees Cook wrote:
> Hi,
>
> On Wed, Sep 12, 2007 at 09:15:07PM -0400, Jeff Garzik wrote:
>>> + { 0, },
>> FWIW I (and several drivers) tend to prefer the more clean version,
>>
>> { },
>>
>> or even
>>
>> { }, /* terminate list */
>
> Ah, yes. I see that now in some of the other drivers. Should I re-send
> this patch (and/or the other PCI patches)?

Can't hurt... but I cannot speak for other maintainers.

Jeff



2007-09-13 04:45:28

by Kees Cook

[permalink] [raw]
Subject: [PATCHv2] misc: fix unterminated *_device_id lists

Fixes drivers that do not correctly terminate their *_device_id lists.
This results in garbage being spewed into modules.pcimap when the module
happens to not have 28 NULL bytes following the table, and/or the last PCI
ID is actually truncated from the table when calculating the modules.alias
PCI aliases, causing those unfortunate device IDs to not auto-load.

Signed-off-by: Kees Cook <[email protected]>
---
Re-send, using recommended list termination code-style.
Diff is against 2.6.23-rc6.

linux-2.6.23-rc6/drivers/char/ipmi/ipmi_si_intf.c | 3 ++-
linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c | 1 +
linux-2.6.23-rc6/drivers/mtd/nand/cafe_nand.c | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
---
diff -uNrp linux-2.6.23-rc6~/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.23-rc6/drivers/char/ipmi/ipmi_si_intf.c
--- linux-2.6.23-rc6~/drivers/char/ipmi/ipmi_si_intf.c 2007-09-11 23:17:13.000000000 -0700
+++ linux-2.6.23-rc6/drivers/char/ipmi/ipmi_si_intf.c 2007-09-11 23:21:51.000000000 -0700
@@ -2215,7 +2215,8 @@ static int ipmi_pci_resume(struct pci_de

static struct pci_device_id ipmi_pci_devices[] = {
{ PCI_DEVICE(PCI_HP_VENDOR_ID, PCI_MMC_DEVICE_ID) },
- { PCI_DEVICE_CLASS(PCI_ERMC_CLASSCODE, PCI_ERMC_CLASSCODE_MASK) }
+ { PCI_DEVICE_CLASS(PCI_ERMC_CLASSCODE, PCI_ERMC_CLASSCODE_MASK) },
+ { }, /* terminate list */
};
MODULE_DEVICE_TABLE(pci, ipmi_pci_devices);

diff -uNrp linux-2.6.23-rc6~/drivers/mtd/nand/cafe_nand.c linux-2.6.23-rc6/drivers/mtd/nand/cafe_nand.c
--- linux-2.6.23-rc6~/drivers/mtd/nand/cafe_nand.c 2007-07-08 16:32:17.000000000 -0700
+++ linux-2.6.23-rc6/drivers/mtd/nand/cafe_nand.c 2007-09-11 23:22:11.000000000 -0700
@@ -816,7 +816,8 @@ static void __devexit cafe_nand_remove(s
}

static struct pci_device_id cafe_nand_tbl[] = {
- { 0x11ab, 0x4100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MEMORY_FLASH << 8, 0xFFFF0 }
+ { 0x11ab, 0x4100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MEMORY_FLASH << 8, 0xFFFF0 },
+ { }, /* terminate list */
};

MODULE_DEVICE_TABLE(pci, cafe_nand_tbl);
diff -urp -x '*.o' linux-2.6.23-rc6~/drivers/media/video/usbvision/usbvision-cards.c linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c
--- linux-2.6.23-rc6~/drivers/media/video/usbvision/usbvision-cards.c 2007-09-11 23:17:19.000000000 -0700
+++ linux-2.6.23-rc6/drivers/media/video/usbvision/usbvision-cards.c 2007-09-12 17:26:46.000000000 -0700
@@ -1081,6 +1081,7 @@ struct usb_device_id usbvision_table []
{ USB_DEVICE(0x2304, 0x0301), .driver_info=PINNA_LINX_VD_IN_CAB_PAL },
{ USB_DEVICE(0x2304, 0x0419), .driver_info=PINNA_PCTV_BUNGEE_PAL_FM },
{ USB_DEVICE(0x2400, 0x4200), .driver_info=HPG_WINTV },
+ { }, /* terminate list */
};

MODULE_DEVICE_TABLE (usb, usbvision_table);


--
Kees Cook

2007-09-13 05:09:18

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCHv2] misc: fix unterminated *_device_id lists

Kees Cook wrote:
> Fixes drivers that do not correctly terminate their *_device_id lists.
> This results in garbage being spewed into modules.pcimap when the module
> happens to not have 28 NULL bytes following the table, and/or the last PCI
> ID is actually truncated from the table when calculating the modules.alias
> PCI aliases, causing those unfortunate device IDs to not auto-load.
>
> Signed-off-by: Kees Cook <[email protected]>
> ---
> Re-send, using recommended list termination code-style.
> Diff is against 2.6.23-rc6.

ACK