fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / isdn / sc / ioctl.c
index 94c9afb..57c4ab9 100644 (file)
@@ -46,7 +46,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 +97,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 +185,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 +197,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;
                }