Re: BUG in i2c_detach_client

Greg KH
2005-06-10T05:59:22Z

On Thu, Jun 09, 2005 at 05:57:44PM +0200, Jean Delvare wrote:
> Hi Andrew,
>
> > Mystery solved.
> >
> > ERROR3:
> > i2c_detach_client(data->lm75[1]); <-- HERE
> > i2c_detach_client(data->lm75[0]);
> > kfree(data->lm75[1]);
> > kfree(data->lm75[0]);
> >
> > The missing i2c_detach_client call meant that data->lm75[1] was still
> > on the list of i2c devices when it was freed. This was corrupting the
> > list. The ERROR3 path now works on my kernel.
>
> Oh my, I had it right under my nose and didn't see it ;) Thanks for the
> clarification.
>
> Greg, please apply the following patch on top of the hwmon patches until
> Mark submits an updated version of the whole thing.
>
> ----------------------------------
>
> Fix a broken error path in the asb100 driver.
>
> Signed-off-by: Jean Delvare <khali@linux-fr.org>
>
> --- linux-2.6.12-rc6/drivers/i2c/chips/asb100.c.orig Wed Jun 8 09:47:53 2005
> +++ linux-2.6.12-rc6/drivers/i2c/chips/asb100.c Thu Jun 9 11:58:34 2005
> @@ -859,6 +859,7 @@
> return 0;
>
> ERROR3:
> + i2c_detach_client(data->lm75[1]);
> i2c_detach_client(data->lm75[0]);
> kfree(data->lm75[1]);
> kfree(data->lm75[0]);

Hm, what tree is this against? Am I missing some inbetween patch here?

thanks,

greg k-h