Re: BUG in i2c_detach_client

From: Jean Delvare
Date: Thu Jun 09 2005 - 10:58:41 EST


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@xxxxxxxxxxxx>

--- 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]);


--
Jean Delvare
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/