diff mbox

[1/1] hid: sensor-hub, fix potential memory leak

Message ID 1404120888-10692-1-git-send-email-jslaby@suse.cz (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

Jiri Slaby June 30, 2014, 9:34 a.m. UTC
hsdev is not freed in sensor_hub_probe when kasprintf inside the for
loop fails. This is because hsdev is not set to platform_data yet (to
be freed by the code in the err_no_mem label). So free the memory
explicitly in the 'if' branch, as this is the only place where this is
(and will) be needed.

Reported-by: coverity
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: srinivas pandruvada <srinivas.pandruvada@intel.com>
Cc: Jiri Kosina <jkosina@suse.cz>
---
 drivers/hid/hid-sensor-hub.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Jiri Kosina June 30, 2014, 11:22 a.m. UTC | #1
On Mon, 30 Jun 2014, Jiri Slaby wrote:

> hsdev is not freed in sensor_hub_probe when kasprintf inside the for
> loop fails. This is because hsdev is not set to platform_data yet (to
> be freed by the code in the err_no_mem label). So free the memory
> explicitly in the 'if' branch, as this is the only place where this is
> (and will) be needed.
> 
> Reported-by: coverity
> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> Cc: srinivas pandruvada <srinivas.pandruvada@intel.com>
> Cc: Jiri Kosina <jkosina@suse.cz>
> ---
>  drivers/hid/hid-sensor-hub.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
> index a8d5c8faf8cf..584e17ce80e4 100644
> --- a/drivers/hid/hid-sensor-hub.c
> +++ b/drivers/hid/hid-sensor-hub.c
> @@ -632,6 +632,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
>  			if (name == NULL) {
>  				hid_err(hdev, "Failed MFD device name\n");
>  					ret = -ENOMEM;
> +					kfree(hsdev);
>  					goto err_no_mem;
>  			}
>  			sd->hid_sensor_hub_client_devs[

Applied, thanks.
diff mbox

Patch

diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index a8d5c8faf8cf..584e17ce80e4 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -632,6 +632,7 @@  static int sensor_hub_probe(struct hid_device *hdev,
 			if (name == NULL) {
 				hid_err(hdev, "Failed MFD device name\n");
 					ret = -ENOMEM;
+					kfree(hsdev);
 					goto err_no_mem;
 			}
 			sd->hid_sensor_hub_client_devs[