]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/isdn/sc/ioctl.c
Merge git://git.infradead.org/mtd-2.6
[linux-2.6-omap-h63xx.git] / drivers / isdn / sc / ioctl.c
index 94c9afb7017c66791b1eb154bcdf5d53f350b77c..7817d2244921c0898385d165beb02e8664451074 100644 (file)
 #include "card.h"
 #include "scioc.h"
 
-extern int indicate_status(int, int, unsigned long, char *);
-extern int startproc(int);
-extern int reset(int);
-extern int send_and_receive(int, unsigned int, unsigned char,unsigned char,
-               unsigned char,unsigned char, 
-               unsigned char, unsigned char *, RspMessage *, int);
-
-extern board *sc_adapter[];
-
-
 static int GetStatus(int card, boardInfo *);
 
 /*
@@ -46,7 +36,8 @@ int sc_ioctl(int card, scs_ioctl *data)
                pr_debug("%s: SCIOCRESET: ioctl received\n",
                        sc_adapter[card]->devicename);
                sc_adapter[card]->StartOnReset = 0;
-               return (reset(card));
+               kfree(rcvmsg);
+               return reset(card);
        }
 
        case SCIOCLOAD:
@@ -96,6 +87,7 @@ int sc_ioctl(int card, scs_ioctl *data)
 
        case SCIOCSTART:
        {
+               kfree(rcvmsg);
                pr_debug("%s: SCIOSTART: ioctl received\n",
                                sc_adapter[card]->devicename);
                if(sc_adapter[card]->EngineUp) {
@@ -183,7 +175,7 @@ int sc_ioctl(int card, scs_ioctl *data)
                                sc_adapter[card]->devicename);
 
                spid = kmalloc(SCIOC_SPIDSIZE, GFP_KERNEL);
-               if(!spid) {
+               if (!spid) {
                        kfree(rcvmsg);
                        return -ENOMEM;
                }
@@ -195,10 +187,10 @@ int sc_ioctl(int card, scs_ioctl *data)
                if (!status) {
                        pr_debug("%s: SCIOCGETSPID: command successful\n",
                                        sc_adapter[card]->devicename);
-               }
-               else {
+               } else {
                        pr_debug("%s: SCIOCGETSPID: command failed (status = %d)\n",
                                sc_adapter[card]->devicename, status);
+                       kfree(spid);
                        kfree(rcvmsg);
                        return status;
                }