diff options
author | Oliver Neukum <oneukum@suse.de> | 2007-06-12 15:36:07 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-06-25 23:38:05 -0700 |
commit | fc0f8fc9be654bbff08ede04a49bd8f9805b9e13 (patch) | |
tree | b17852dae108fdf0ee9ec4d792a3ceefd40a1261 /drivers/usb | |
parent | 944dc184f6fe0dc63633099ba87cb75fe4ee0c51 (diff) | |
download | talos-op-linux-fc0f8fc9be654bbff08ede04a49bd8f9805b9e13.tar.gz talos-op-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')
-rw-r--r-- | drivers/usb/misc/iowarrior.c | 7 |
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; } |