[PATCH] ISDN: fix a few memory leaks in sc_ioctl()

Fix a few memory leaks in drivers/isdn/sc/ioctl.c::sc_ioctl()

Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Acked-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Jesper Juhl 2006-03-31 02:30:57 -08:00 committed by Linus Torvalds
parent b0b4ed728c
commit d32af0fe11

View file

@ -46,7 +46,8 @@ int sc_ioctl(int card, scs_ioctl *data)
pr_debug("%s: SCIOCRESET: ioctl received\n", pr_debug("%s: SCIOCRESET: ioctl received\n",
sc_adapter[card]->devicename); sc_adapter[card]->devicename);
sc_adapter[card]->StartOnReset = 0; sc_adapter[card]->StartOnReset = 0;
return (reset(card)); kfree(rcvmsg);
return reset(card);
} }
case SCIOCLOAD: case SCIOCLOAD:
@ -183,7 +184,7 @@ int sc_ioctl(int card, scs_ioctl *data)
sc_adapter[card]->devicename); sc_adapter[card]->devicename);
spid = kmalloc(SCIOC_SPIDSIZE, GFP_KERNEL); spid = kmalloc(SCIOC_SPIDSIZE, GFP_KERNEL);
if(!spid) { if (!spid) {
kfree(rcvmsg); kfree(rcvmsg);
return -ENOMEM; return -ENOMEM;
} }
@ -195,10 +196,10 @@ int sc_ioctl(int card, scs_ioctl *data)
if (!status) { if (!status) {
pr_debug("%s: SCIOCGETSPID: command successful\n", pr_debug("%s: SCIOCGETSPID: command successful\n",
sc_adapter[card]->devicename); sc_adapter[card]->devicename);
} } else {
else {
pr_debug("%s: SCIOCGETSPID: command failed (status = %d)\n", pr_debug("%s: SCIOCGETSPID: command failed (status = %d)\n",
sc_adapter[card]->devicename, status); sc_adapter[card]->devicename, status);
kfree(spid);
kfree(rcvmsg); kfree(rcvmsg);
return status; return status;
} }