diff options
author | Sudip Mukherjee <sudipm.mukherjee@gmail.com> | 2015-09-07 12:38:21 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-09-13 01:24:53 (GMT) |
commit | ea022df19395f0da090e9dcdf417d28326e15404 (patch) | |
tree | a4591540e6371a2f6eb7e6207ccbf8ed4d61765d | |
parent | fb7014df159bb8524341a0fdb8d467f6827b0770 (diff) | |
download | linux-ea022df19395f0da090e9dcdf417d28326e15404.tar.xz |
staging: gdm72xx: fix memory leak
We were successfully requesting the firmware but on error it was not
being released.
Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/gdm72xx/usb_boot.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/staging/gdm72xx/usb_boot.c b/drivers/staging/gdm72xx/usb_boot.c index 3ccc447..50fbec3 100644 --- a/drivers/staging/gdm72xx/usb_boot.c +++ b/drivers/staging/gdm72xx/usb_boot.c @@ -159,8 +159,10 @@ int usb_boot(struct usb_device *usbdev, u16 pid) } tx_buf = kmalloc(DOWNLOAD_SIZE, GFP_KERNEL); - if (tx_buf == NULL) + if (tx_buf == NULL) { + release_firmware(firm); return -ENOMEM; + } if (firm->size < sizeof(hdr)) { dev_err(&usbdev->dev, "Cannot read the image info.\n"); @@ -285,8 +287,10 @@ static int em_download_image(struct usb_device *usbdev, const char *img_name, } buf = kmalloc(DOWNLOAD_CHUCK + pad_size, GFP_KERNEL); - if (buf == NULL) + if (buf == NULL) { + release_firmware(firm); return -ENOMEM; + } strcpy(buf+pad_size, type_string); ret = gdm_wibro_send(usbdev, buf, strlen(type_string)+pad_size); |