aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/base/platform.c19
-rw-r--r--include/linux/device.h4
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 1ba9d617d241..d2d4926c5c4c 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -1239,6 +1239,25 @@ static int __init early_platform_driver_probe_id(char *class_str,
1239 } 1239 }
1240 1240
1241 if (match) { 1241 if (match) {
1242 /*
1243 * Set up a sensible init_name to enable
1244 * dev_name() and others to be used before the
1245 * rest of the driver core is initialized.
1246 */
1247 if (!match->dev.init_name) {
1248 char buf[32];
1249
1250 if (match->id != -1)
1251 snprintf(buf, sizeof(buf), "%s.%d",
1252 match->name, match->id);
1253 else
1254 snprintf(buf, sizeof(buf), "%s",
1255 match->name);
1256
1257 match->dev.init_name = kstrdup(buf, GFP_KERNEL);
1258 if (!match->dev.init_name)
1259 return -ENOMEM;
1260 }
1242 if (epdrv->pdrv->probe(match)) 1261 if (epdrv->pdrv->probe(match))
1243 pr_warning("%s: unable to probe %s early.\n", 1262 pr_warning("%s: unable to probe %s early.\n",
1244 class_str, match->name); 1263 class_str, match->name);
diff --git a/include/linux/device.h b/include/linux/device.h
index 182192892d45..241b96bcd7ad 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -451,6 +451,10 @@ struct device {
451 451
452static inline const char *dev_name(const struct device *dev) 452static inline const char *dev_name(const struct device *dev)
453{ 453{
454 /* Use the init name until the kobject becomes available */
455 if (dev->init_name)
456 return dev->init_name;
457
454 return kobject_name(&dev->kobj); 458 return kobject_name(&dev->kobj);
455} 459}
456 460