From: Takashi Iwai Date: Mon, 1 Dec 2008 21:13:49 +0000 (-0800) Subject: parport_serial: fix array overflow X-Git-Tag: v2.6.28-rc7~22 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=36be47d6d8d98f54b6c4f891e9f54fb2bf554584;p=linux-2.6-omap-h63xx.git parport_serial: fix array overflow The netmos_9xx5_combo type assumes that PCI SSID provides always the correct value for the number of parallel and serial ports, but there are indeed broken devices with wrong numbers, which may result in Oops. This patch simply adds the check of the array range. Reference: Novell bnc#447067 https://bugzilla.novell.com/show_bug.cgi?id=447067 Signed-off-by: Takashi Iwai Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c index e2e95b36a60..101ed49a2d1 100644 --- a/drivers/parport/parport_serial.c +++ b/drivers/parport/parport_serial.c @@ -70,6 +70,8 @@ static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc * parallel ports and is the number of serial ports. */ card->numports = (dev->subsystem_device & 0xf0) >> 4; + if (card->numports > ARRAY_SIZE(card->addr)) + card->numports = ARRAY_SIZE(card->addr); return 0; }