提交 d32af0fe 编写于 作者: J Jesper Juhl 提交者: Linus Torvalds

[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: NJesper Juhl <jesper.juhl@gmail.com>
Acked-by: NKarsten Keil <kkeil@suse.de>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 b0b4ed72
...@@ -46,7 +46,8 @@ int sc_ioctl(int card, scs_ioctl *data) ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册