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, -- 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