From: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
We currently add the slave device to a linked list before device_register(), and then remove it if device_register() fails.
It's not clear why this sequence was necessary, this patch moves the linked list management to after the device_register().
Suggested-by: Keyon Jie yang.jie@linux.intel.com Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Reviewed-by: Guennadi Liakhovetski guennadi.liakhovetski@linux.intel.com Signed-off-by: Bard Liao yung-chuan.liao@linux.intel.com --- drivers/soundwire/slave.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c index 112b21967c7a..0c92db2e1ddc 100644 --- a/drivers/soundwire/slave.c +++ b/drivers/soundwire/slave.c @@ -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;