summaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/iowarrior.c
diff options
context:
space:
mode:
authorOliver Neukum <oneukum@suse.de>2007-06-12 15:36:07 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2007-06-26 08:38:05 +0200
commitfc0f8fc9be654bbff08ede04a49bd8f9805b9e13 (patch)
treeb17852dae108fdf0ee9ec4d792a3ceefd40a1261 /drivers/usb/misc/iowarrior.c
parentUSB: ti serial driver sleeps with spinlock held (diff)
downloadlinux-fc0f8fc9be654bbff08ede04a49bd8f9805b9e13.tar.xz
linux-fc0f8fc9be654bbff08ede04a49bd8f9805b9e13.zip
USB: memory leak in iowarrior.c
this is a classical memory leak in the ioctl handler. The buffer is simply never freed. This fixes it the obvious way. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/misc/iowarrior.c')
-rw-r--r--drivers/usb/misc/iowarrior.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/usb/misc/iowarrior.c b/drivers/usb/misc/iowarrior.c
index fc51207b71b8..3bb33f7bfa36 100644
--- a/drivers/usb/misc/iowarrior.c
+++ b/drivers/usb/misc/iowarrior.c
@@ -495,8 +495,8 @@ static int iowarrior_ioctl(struct inode *inode, struct file *file,
/* verify that the device wasn't unplugged */
if (!dev->present) {
- mutex_unlock(&dev->mutex);
- return -ENODEV;
+ retval = -ENODEV;
+ goto error_out;
}
dbg("%s - minor %d, cmd 0x%.4x, arg %ld", __func__, dev->minor, cmd,
@@ -579,9 +579,10 @@ static int iowarrior_ioctl(struct inode *inode, struct file *file,
retval = -ENOTTY;
break;
}
-
+error_out:
/* unlock the device */
mutex_unlock(&dev->mutex);
+ kfree(buffer);
return retval;
}