On 23-03-21, 10:25, Bard Liao wrote: > From: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > > 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(). Maybe add a comment :-) The reason here is that before calling device_register() we need to be ready and completely initialized. device_register is absolutely the last step in the flow, always. The probe of the device can happen and before you get a chance to add to list, many number of things can happen.. So adding after is not a very good idea :) HTH > > Suggested-by: Keyon Jie <yang.jie@xxxxxxxxxxxxxxx> > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@xxxxxxxxxxxxxxx> > Signed-off-by: Bard Liao <yung-chuan.liao@xxxxxxxxxxxxxxx> > --- > 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; > -- > 2.17.1 -- ~Vinod