@@ -65,9 +65,6 @@ int sdw_slave_add(struct sdw_bus *bus,
for (i = 0; i < SDW_MAX_PORTS; i++)
init_completion(&slave->port_ready[i]);
- mutex_lock(&bus->bus_lock);
- list_add_tail(&slave->node, &bus->slaves);
- mutex_unlock(&bus->bus_lock);
ret = device_register(&slave->dev);
if (ret) {
@@ -77,13 +74,15 @@ int sdw_slave_add(struct sdw_bus *bus,
* On err, don't free but drop ref as this will be freed
* when release method is invoked.
*/
- mutex_lock(&bus->bus_lock);
- list_del(&slave->node);
- mutex_unlock(&bus->bus_lock);
put_device(&slave->dev);
return ret;
}
+
+ mutex_lock(&bus->bus_lock);
+ list_add_tail(&slave->node, &bus->slaves);
+ mutex_unlock(&bus->bus_lock);
+
sdw_slave_debugfs_init(slave);
return ret;