Message ID | 20210716114408.17320-2-adrian.hunter@intel.com |
---|---|
State | New |
Headers | show |
Series | driver core: Add ability to delete device links of unregistered devices | expand |
On Fri, Jul 16, 2021 at 02:44:07PM +0300, Adrian Hunter wrote: > sysfs_remove_link() causes a warning if the parent directory does not > exist. That can happen if the device link consumer has not been registered. > So do not attempt sysfs_remove_link() in that case. > > Fixes: 287905e68dd29 ("driver core: Expose device link details in sysfs") > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> > Cc: stable@vger.kernel.org # 5.9+ > Reviewed-by: Rafael J. Wysocki <rafael@kernel.org> > --- > drivers/base/core.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index ea5b85354526..2de8f7d8cf54 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -575,8 +575,10 @@ static void devlink_remove_symlinks(struct device *dev, > return; > } > > - snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup)); > - sysfs_remove_link(&con->kobj, buf); > + if (device_is_registered(con)) { > + snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup)); > + sysfs_remove_link(&con->kobj, buf); > + } > snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con)); > sysfs_remove_link(&sup->kobj, buf); > kfree(buf); > -- > 2.17.1 > I've applied this patch to my tree now. thanks, greg k-h
diff --git a/drivers/base/core.c b/drivers/base/core.c index ea5b85354526..2de8f7d8cf54 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -575,8 +575,10 @@ static void devlink_remove_symlinks(struct device *dev, return; } - snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup)); - sysfs_remove_link(&con->kobj, buf); + if (device_is_registered(con)) { + snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup)); + sysfs_remove_link(&con->kobj, buf); + } snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con)); sysfs_remove_link(&sup->kobj, buf); kfree(buf);