Fix a few resource leaks in drivers/isdn/sc/ioctl.c::sc_ioctl()
Signed-off-by: Jesper Juhl <[email protected]>
---
drivers/isdn/sc/ioctl.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
--- linux-2.6.16-mm1-orig/drivers/isdn/sc/ioctl.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16-mm1/drivers/isdn/sc/ioctl.c 2006-03-26 16:11:49.000000000 +0200
@@ -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:
@@ -183,7 +184,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 +196,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;
}
On Sun, Mar 26, 2006 at 04:16:25PM +0200, Jesper Juhl wrote:
>
> Fix a few resource leaks in drivers/isdn/sc/ioctl.c::sc_ioctl()
>
>
> Signed-off-by: Jesper Juhl <[email protected]>
Acked-by: Karsten Keil <[email protected]>
> ---
>
> drivers/isdn/sc/ioctl.c | 9 +++++----
> 1 files changed, 5 insertions(+), 4 deletions(-)
>
> --- linux-2.6.16-mm1-orig/drivers/isdn/sc/ioctl.c 2006-03-20 06:53:29.000000000 +0100
> +++ linux-2.6.16-mm1/drivers/isdn/sc/ioctl.c 2006-03-26 16:11:49.000000000 +0200
> @@ -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:
> @@ -183,7 +184,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 +196,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;
> }
>
>
--
Karsten Keil
SuSE Labs
ISDN development