]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] epca janitor work
authorDave Jones <davej@suse.de>
Fri, 31 May 2002 03:44:23 +0000 (20:44 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Fri, 31 May 2002 03:44:23 +0000 (20:44 -0700)
o check request_region result
o Handle failure gracefully

drivers/char/epca.c

index d90d0d973380759bed47c23aea57c0f51a7148c2..f2a54d6cc11a517b4053dcd00ccc3d0397a56456 100644 (file)
@@ -2022,7 +2022,8 @@ static void post_fep_init(unsigned int crd)
            (*(ushort *)((ulong)memaddr + XEPORTS) < 3))
                shrinkmem = 1;
        if (bd->type < PCIXEM)
-               request_region((int)bd->port, 4, board_desc[bd->type]);
+               if (!request_region((int)bd->port, 4, board_desc[bd->type]))
+                       return;         
 
        memwinon(bd, 0);
 
@@ -2186,9 +2187,13 @@ static void post_fep_init(unsigned int crd)
                if (!(ch->tmp_buf))
                {
                        printk(KERN_ERR "POST FEP INIT : kmalloc failed for port 0x%x\n",i);
-
+                       release_region((int)bd->port, 4);
+                       while(i-- > 0)
+                               kfree((ch--)->tmp_buf);
+                       return;
                }
-               memset((void *)ch->tmp_buf,0,ch->txbufsize);
+               else 
+                       memset((void *)ch->tmp_buf,0,ch->txbufsize);
        } /* End for each port */
 
        printk(KERN_INFO