Commit 73e0d48b authored by Michael Buesch's avatar Michael Buesch Committed by Linus Torvalds

parport_pc: Fix subscription bugs

This patch fixes array subscription bugs in the parport_pc driver.

drivers/parport/parport_pc.c: In function ‘parport_irq_probe’:
drivers/parport/parport_pc.c:1589: warning: array subscript is above array bounds
drivers/parport/parport_pc.c: In function ‘parport_pc_probe_port’:
drivers/parport/parport_pc.c:1579: warning: array subscript is above array bounds

The patch also fixes a few other array bugs, which the compiler was
unable to find. Coding style violations are also fixed.
Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 0b4068a1
...@@ -1251,12 +1251,12 @@ static void __devinit show_parconfig_smsc37c669(int io, int key) ...@@ -1251,12 +1251,12 @@ static void __devinit show_parconfig_smsc37c669(int io, int key)
the choices to standard settings, i.e. io-address and IRQ the choices to standard settings, i.e. io-address and IRQ
are related, however DMA can be 1 or 3, assume DMA_A=DMA1, are related, however DMA can be 1 or 3, assume DMA_A=DMA1,
DMA_C=DMA3 (this is true e.g. for TYAN 1564D Tomcat IV) */ DMA_C=DMA3 (this is true e.g. for TYAN 1564D Tomcat IV) */
if(cr23*4 >=0x100) { /* if active */ if (cr23 * 4 >= 0x100) { /* if active */
while((superios[i].io!= 0) && (i<NR_SUPERIOS)) while ((i < NR_SUPERIOS) && (superios[i].io != 0))
i++; i++;
if(i==NR_SUPERIOS) if (i == NR_SUPERIOS) {
printk(KERN_INFO "Super-IO: too many chips!\n"); printk(KERN_INFO "Super-IO: too many chips!\n");
else { } else {
int d; int d;
switch (cr23*4) { switch (cr23*4) {
case 0x3bc: case 0x3bc:
...@@ -1332,12 +1332,12 @@ static void __devinit show_parconfig_winbond(int io, int key) ...@@ -1332,12 +1332,12 @@ static void __devinit show_parconfig_winbond(int io, int key)
printk(KERN_INFO "Winbond LPT Config: Port mode=%s\n", modes[crf0 & 0x07]); printk(KERN_INFO "Winbond LPT Config: Port mode=%s\n", modes[crf0 & 0x07]);
} }
if(cr30 & 0x01) { /* the settings can be interrogated later ... */ if (cr30 & 0x01) { /* the settings can be interrogated later ... */
while((superios[i].io!= 0) && (i<NR_SUPERIOS)) while ((i < NR_SUPERIOS) && (superios[i].io != 0))
i++; i++;
if(i==NR_SUPERIOS) if (i == NR_SUPERIOS) {
printk(KERN_INFO "Super-IO: too many chips!\n"); printk(KERN_INFO "Super-IO: too many chips!\n");
else { } else {
superios[i].io = (cr60<<8)|cr61; superios[i].io = (cr60<<8)|cr61;
superios[i].irq = cr70&0x0f; superios[i].irq = cr70&0x0f;
superios[i].dma = (((cr74 & 0x07) > 3) ? superios[i].dma = (((cr74 & 0x07) > 3) ?
...@@ -1575,20 +1575,22 @@ static void __devinit detect_and_report_it87(void) ...@@ -1575,20 +1575,22 @@ static void __devinit detect_and_report_it87(void)
static int get_superio_dma (struct parport *p) static int get_superio_dma (struct parport *p)
{ {
int i=0; int i = 0;
while( (superios[i].io != p->base) && (i<NR_SUPERIOS))
while ((i < NR_SUPERIOS) && (superios[i].io != p->base))
i++; i++;
if (i!=NR_SUPERIOS) if (i != NR_SUPERIOS)
return superios[i].dma; return superios[i].dma;
return PARPORT_DMA_NONE; return PARPORT_DMA_NONE;
} }
static int get_superio_irq (struct parport *p) static int get_superio_irq (struct parport *p)
{ {
int i=0; int i = 0;
while( (superios[i].io != p->base) && (i<NR_SUPERIOS))
while ((i < NR_SUPERIOS) && (superios[i].io != p->base))
i++; i++;
if (i!=NR_SUPERIOS) if (i != NR_SUPERIOS)
return superios[i].irq; return superios[i].irq;
return PARPORT_IRQ_NONE; return PARPORT_IRQ_NONE;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment