From f56e9e3b89a6b6027ace73c78310c7d8e05467b7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 30 May 2008 10:45:12 -0700 Subject: [PATCH] --- yaml --- r: 108990 b: refs/heads/master c: c906a48adc74fc455378137ac5124b13e7030a15 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/base/core.c | 20 +++++++++++++------- trunk/include/linux/device.h | 1 + 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 171ec627bf30..fa41b987183d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3b98aeaf3a75f544dc945694f4fcf6e1c4bab89d +refs/heads/master: c906a48adc74fc455378137ac5124b13e7030a15 diff --git a/trunk/drivers/base/core.c b/trunk/drivers/base/core.c index 40041319657d..d021c98605b3 100644 --- a/trunk/drivers/base/core.c +++ b/trunk/drivers/base/core.c @@ -844,13 +844,19 @@ int device_add(struct device *dev) { struct device *parent = NULL; struct class_interface *class_intf; - int error; + int error = -EINVAL; dev = get_device(dev); - if (!dev || !strlen(dev->bus_id)) { - error = -EINVAL; - goto Done; - } + if (!dev) + goto done; + + /* Temporarily support init_name if it is set. + * It will override bus_id for now */ + if (dev->init_name) + dev_set_name(dev, "%s", dev->init_name); + + if (!strlen(dev->bus_id)) + goto done; pr_debug("device: '%s': %s\n", dev->bus_id, __func__); @@ -919,7 +925,7 @@ int device_add(struct device *dev) class_intf->add_dev(dev, class_intf); mutex_unlock(&dev->class->p->class_mutex); } - Done: +done: put_device(dev); return error; DPMError: @@ -946,7 +952,7 @@ int device_add(struct device *dev) cleanup_device_parent(dev); if (parent) put_device(parent); - goto Done; + goto done; } /** diff --git a/trunk/include/linux/device.h b/trunk/include/linux/device.h index a701c1b5184c..4d8372d135df 100644 --- a/trunk/include/linux/device.h +++ b/trunk/include/linux/device.h @@ -358,6 +358,7 @@ struct device { struct kobject kobj; char bus_id[BUS_ID_SIZE]; /* position on parent bus */ + const char *init_name; /* initial name of the device */ struct device_type *type; unsigned uevent_suppress:1;