Re: [PATCH v1] i2c: i801: Avoid memory leak in check_acpi_smo88xx_device()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday 16 August 2019 16:17:05 Andy Shevchenko wrote:
> check_acpi_smo88xx_device() utilizes acpi_get_object_info() which in its turn
> allocates a buffer. User is responsible to clean allocated resources. The last
> has been missed in the original code. Fix it here.
> 
> While here, replace !ACPI_SUCCESS() with ACPI_FAILURE().
> 
> Fixes: 19b07cb4a187 ("i2c: i801: Register optional lis3lv02d I2C device on Dell machines")
> Cc: Pali Rohár <pali.rohar@xxxxxxxxx>
> Cc: Jean Delvare <jdelvare@xxxxxxx>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

Nice catch! Thank you.

Reviewed-by: Pali Rohár <pali.rohar@xxxxxxxxx>

> ---
>  drivers/i2c/busses/i2c-i801.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
> index 09b7e27ca97b..1e4cde64293b 100644
> --- a/drivers/i2c/busses/i2c-i801.c
> +++ b/drivers/i2c/busses/i2c-i801.c
> @@ -1194,19 +1194,28 @@ static acpi_status check_acpi_smo88xx_device(acpi_handle obj_handle,
>  	int i;
>  
>  	status = acpi_get_object_info(obj_handle, &info);
> -	if (!ACPI_SUCCESS(status) || !(info->valid & ACPI_VALID_HID))
> +	if (ACPI_FAILURE(status))
>  		return AE_OK;
>  
> +	if (!(info->valid & ACPI_VALID_HID))
> +		goto smo88xx_not_found;
> +
>  	hid = info->hardware_id.string;
>  	if (!hid)
> -		return AE_OK;
> +		goto smo88xx_not_found;
>  
>  	i = match_string(acpi_smo8800_ids, ARRAY_SIZE(acpi_smo8800_ids), hid);
>  	if (i < 0)
> -		return AE_OK;
> +		goto smo88xx_not_found;
> +
> +	kfree(info);
>  
>  	*((bool *)return_value) = true;
>  	return AE_CTRL_TERMINATE;
> +
> +smo88xx_not_found:
> +	kfree(info);
> +	return AE_OK;
>  }
>  
>  static bool is_dell_system_with_lis3lv02d(void)

-- 
Pali Rohár
pali.rohar@xxxxxxxxx



[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux