diff options
author | Oliver Neukum <oneukum@suse.de> | 2007-06-12 09:36:07 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-06-26 02:38:05 -0400 |
commit | fc0f8fc9be654bbff08ede04a49bd8f9805b9e13 (patch) | |
tree | b17852dae108fdf0ee9ec4d792a3ceefd40a1261 /drivers/usb/misc | |
parent | 944dc184f6fe0dc63633099ba87cb75fe4ee0c51 (diff) |
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')
-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, | |||
495 | 495 | ||
496 | /* verify that the device wasn't unplugged */ | 496 | /* verify that the device wasn't unplugged */ |
497 | if (!dev->present) { | 497 | if (!dev->present) { |
498 | mutex_unlock(&dev->mutex); | 498 | retval = -ENODEV; |
499 | return -ENODEV; | 499 | goto error_out; |
500 | } | 500 | } |
501 | 501 | ||
502 | dbg("%s - minor %d, cmd 0x%.4x, arg %ld", __func__, dev->minor, cmd, | 502 | 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, | |||
579 | retval = -ENOTTY; | 579 | retval = -ENOTTY; |
580 | break; | 580 | break; |
581 | } | 581 | } |
582 | 582 | error_out: | |
583 | /* unlock the device */ | 583 | /* unlock the device */ |
584 | mutex_unlock(&dev->mutex); | 584 | mutex_unlock(&dev->mutex); |
585 | kfree(buffer); | ||
585 | return retval; | 586 | return retval; |
586 | } | 587 | } |
587 | 588 | ||