Char: stallion, fix oops during init with ISA cards
authorIngo Korb <ml@akana.de>
Sun, 24 Jun 2007 00:16:35 +0000 (17:16 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Sun, 24 Jun 2007 15:59:11 +0000 (08:59 -0700)
The stallion driver oopses while initializing ISA cards due to an
uninitialized variable.  This patch changes the initialisation order to
match the PCI code path.

Signed-off-by: Ingo Korb <ml@akana.de>
Acked-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/char/stallion.c

index 45bf2a262a858c144c74388f271bfb13cb4e9b9a..8c73ccb8830ff685e8e21bb2dc6a6413e6a813b5 100644 (file)
@@ -4753,13 +4753,14 @@ static int __init stallion_module_init(void)
                brdp->ioaddr2 = conf.ioaddr2;
                brdp->irq = conf.irq;
                brdp->irqtype = conf.irqtype;
                brdp->ioaddr2 = conf.ioaddr2;
                brdp->irq = conf.irq;
                brdp->irqtype = conf.irqtype;
-               if (stl_brdinit(brdp))
+               stl_brds[brdp->brdnr] = brdp;
+               if (stl_brdinit(brdp)) {
+                       stl_brds[brdp->brdnr] = NULL;
                        kfree(brdp);
                        kfree(brdp);
-               else {
+               else {
                        for (j = 0; j < brdp->nrports; j++)
                                tty_register_device(stl_serial,
                                        brdp->brdnr * STL_MAXPORTS + j, NULL);
                        for (j = 0; j < brdp->nrports; j++)
                                tty_register_device(stl_serial,
                                        brdp->brdnr * STL_MAXPORTS + j, NULL);
-                       stl_brds[brdp->brdnr] = brdp;
                        stl_nrbrds = i + 1;
                }
        }
                        stl_nrbrds = i + 1;
                }
        }