> diff --git a/drivers/soundwire/sysfs_slave_dpn.c b/drivers/soundwire/sysfs_slave_dpn.c > index c4b6543c09fd..a3fb380ee519 100644 > --- a/drivers/soundwire/sysfs_slave_dpn.c > +++ b/drivers/soundwire/sysfs_slave_dpn.c > @@ -283,6 +283,9 @@ int sdw_slave_sysfs_dpn_init(struct sdw_slave *slave) > int ret; > int i; > > + if (!slave->prop.source_ports && !slave->prop.sink_ports) > + return 0; > + > mask = slave->prop.source_ports; > for_each_set_bit(i, &mask, 32) { > ret = add_all_attributes(&slave->dev, i, 1); I am struggling with this one since the driver is still adding attributes manually. You mentioned in the other thread that " That's what the is_visible() callback is for in the groups structure, you determine if the attribute is visable or not at runtime, you don't rely on the driver itself to add/remove attributes, that does not scale and again, is racy. " I interpret that as "there's still a race here", no?