Skip to content

Commit d21fdd0

Browse files
andy-shevgregkh
authored andcommitted
driver core: Return proper error code when dev_set_name() fails
Whe device_add() tries to assign a device name with help of dev_set_name() the error path explicitly uses -EINVAL, while the function may return something different. Signed-off-by: Andy Shevchenko <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 1b28cb8 commit d21fdd0

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

drivers/base/core.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3530,18 +3530,17 @@ int device_add(struct device *dev)
35303530
* the name, and force the use of dev_name()
35313531
*/
35323532
if (dev->init_name) {
3533-
dev_set_name(dev, "%s", dev->init_name);
3533+
error = dev_set_name(dev, "%s", dev->init_name);
35343534
dev->init_name = NULL;
35353535
}
35363536

3537+
if (dev_name(dev))
3538+
error = 0;
35373539
/* subsystems can specify simple device enumeration */
3538-
if (!dev_name(dev) && dev->bus && dev->bus->dev_name)
3539-
dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
3540-
3541-
if (!dev_name(dev)) {
3542-
error = -EINVAL;
3540+
else if (dev->bus && dev->bus->dev_name)
3541+
error = dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
3542+
if (error)
35433543
goto name_error;
3544-
}
35453544

35463545
pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
35473546

0 commit comments

Comments
 (0)