Am 05.09.2012 14:04, schrieb Michael Lawnick: > If kernel is compiled with CONFIG_PROVE_LOCKING the > validator raises an error when a multiplexer is removed > via sysfs and sub-clients are connected to it. This is a > false positive. > Documentation/lockdep-design.txt recommends to handle this > via calls to mutex_lock_nested() > > Signed-off-by: Michael Lawnick <ml.lawnick@xxxxxx> > Cc: Jean Delvare <khali@xxxxxxxxxxxx > --- > Documentation originally recommends to use an enum. > This is not applicable for a tree with unlimited depth. > This is why I use the adapter id which is expected > to be unique and monotonic increasing with the depth of > the tree. > > --- linux/drivers/i2c/i2c-core.c.dist 2012-09-05 09:46:50.000000000 +0200 > +++ linux/drivers/i2c/i2c-core.c 2012-09-05 09:56:58.000000000 +0200 > @@ -628,7 +628,7 @@ i2c_sysfs_delete_device(struct device *d > > /* Make sure the device was added through sysfs */ > res = -ENOENT; > - mutex_lock(&adap->userspace_clients_lock); > + mutex_lock_nested(&adap->userspace_clients_lock, i2c_adapter_id(adap)); > list_for_each_entry_safe(client, next, &adap->userspace_clients, > detected) { > if (client->addr == addr) { > @@ -936,7 +936,7 @@ int i2c_del_adapter(struct i2c_adapter * > return res; > > /* Remove devices instantiated from sysfs */ > - mutex_lock(&adap->userspace_clients_lock); > + mutex_lock_nested(&adap->userspace_clients_lock, i2c_adapter_id(adap)); > list_for_each_entry_safe(client, next, &adap->userspace_clients, > detected) { > dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name, This will get problems with maximum log level :-( Please ignore, other solution is under construction. -- KR Michael -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html