[lm-sensors] [PATCH] hwmon: Fix freeing of gpio_data and irq

Jonathan Cameron jic23 at cam.ac.uk
Sun Aug 23 17:17:19 CEST 2009


Hi Roel,

> If already requested, gpio_data and irq should be freed in
> the case of an error.

All looks good to me.  Good spot in both cases, thanks.

Acked-by: Jonathan Cameron <jic23 at cam.ac.uk>

Andrew, can you push these through as fixes?
You'd be pretty unlucky to hit either of them, but better
safe than sorry.

Thanks
> 
> Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
> ---
> please review, especially the added free_irq(): are its
> arguments ok like this?
Yup, same as in the remove function and given irq is disabled
anyway at that point all should be fine.
> 
> diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
> index 6290a25..303c026 100644
> --- a/drivers/hwmon/sht15.c
> +++ b/drivers/hwmon/sht15.c
> @@ -562,7 +562,7 @@ static int __devinit sht15_probe(struct platform_device *pdev)
>  	ret = sysfs_create_group(&pdev->dev.kobj, &sht15_attr_group);
>  	if (ret) {
>  		dev_err(&pdev->dev, "sysfs create failed");
> -		goto err_free_data;
> +		goto err_release_gpio_data;
>  	}
>  
>  	ret = request_irq(gpio_to_irq(data->pdata->gpio_data),
> @@ -581,10 +581,12 @@ static int __devinit sht15_probe(struct platform_device *pdev)
>  	data->hwmon_dev = hwmon_device_register(data->dev);
>  	if (IS_ERR(data->hwmon_dev)) {
>  		ret = PTR_ERR(data->hwmon_dev);
> -		goto err_release_gpio_data;
> +		goto err_release_irq;
>  	}
>  	return 0;
>  
> +err_release_irq:
> +	free_irq(gpio_to_irq(data->pdata->gpio_data), data);
>  err_release_gpio_data:
>  	gpio_free(data->pdata->gpio_data);
>  err_release_gpio_sck:





More information about the lm-sensors mailing list