From: Ryan Mallon on
Wolfram Sang wrote:
> Probably due to a copy & paste bug, clientdata was set again to the data
> structure (which is freed immediately afterwards) when it should be NULLed.

Good catch. Thanks.

Acked-by: Ryan Mallon <ryan(a)bluewatersys.com>

> Signed-off-by: Wolfram Sang <w.sang(a)pengutronix.de>
> Cc: Ryan Mallon <ryan(a)bluewatersys.com>
> Cc: Anton Vorontsov <cbouatmailru(a)gmail.com>
> ---
> drivers/power/ds2782_battery.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/power/ds2782_battery.c b/drivers/power/ds2782_battery.c
> index da14f37..6971b85 100644
> --- a/drivers/power/ds2782_battery.c
> +++ b/drivers/power/ds2782_battery.c
> @@ -236,7 +236,7 @@ static int ds2782_battery_remove(struct i2c_client *client)
> idr_remove(&battery_id, info->id);
> mutex_unlock(&battery_lock);
>
> - i2c_set_clientdata(client, info);
> + i2c_set_clientdata(client, NULL);
>
> kfree(info);
> return 0;
> @@ -289,7 +289,7 @@ static int ds2782_battery_probe(struct i2c_client *client,
> fail_register:
> kfree(info->battery.name);
> fail_name:
> - i2c_set_clientdata(client, info);
> + i2c_set_clientdata(client, NULL);
> kfree(info);
> fail_info:
> mutex_lock(&battery_lock);

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Anton Vorontsov on
On Sat, Mar 20, 2010 at 03:12:43PM +0100, Wolfram Sang wrote:
> Probably due to a copy & paste bug, clientdata was set again to the data
> structure (which is freed immediately afterwards) when it should be NULLed.
>
> Signed-off-by: Wolfram Sang <w.sang(a)pengutronix.de>
> Cc: Ryan Mallon <ryan(a)bluewatersys.com>
> Cc: Anton Vorontsov <cbouatmailru(a)gmail.com>
> ---
> drivers/power/ds2782_battery.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/power/ds2782_battery.c b/drivers/power/ds2782_battery.c
> index da14f37..6971b85 100644
> --- a/drivers/power/ds2782_battery.c
> +++ b/drivers/power/ds2782_battery.c
> @@ -236,7 +236,7 @@ static int ds2782_battery_remove(struct i2c_client *client)
> idr_remove(&battery_id, info->id);
> mutex_unlock(&battery_lock);
>
> - i2c_set_clientdata(client, info);
> + i2c_set_clientdata(client, NULL);
[...]
> - i2c_set_clientdata(client, info);
> + i2c_set_clientdata(client, NULL);

Why is this needed? I'd vote for just removing set_clientdata in
fail/remove paths.

Thanks,

--
Anton Vorontsov
email: cbouatmailru(a)gmail.com
irc://irc.freenode.net/bd2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Wolfram Sang on
> Why is this needed? I'd vote for just removing set_clientdata in
> fail/remove paths.

Yes, it will be done this way. I will prepare the necessary cleanups for
2.6.35. Please drop this patch.

--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |