[SCSI] ses: fix problems caused by empty SES provided name
authorYinghai Lu <yinghai@kernel.org>
Fri, 1 May 2009 02:13:41 +0000 (19:13 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 15 May 2009 16:20:57 +0000 (12:20 -0400)
We use the name provided by SES to name objects.  An empty name is
legal in SES but causes problems in our generic device hierarchy.  Fix
this by falling back to a number if the name is either NULL or empty.

Also fix a secondary bug spotted in that dev_set_name(dev, name) uses
a string format and so would go wrong if name contained a '%'.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/misc/enclosure.c

index 3cf61ec..348443b 100644 (file)
@@ -119,7 +119,7 @@ enclosure_register(struct device *dev, const char *name, int components,
        edev->edev.class = &enclosure_class;
        edev->edev.parent = get_device(dev);
        edev->cb = cb;
-       dev_set_name(&edev->edev, name);
+       dev_set_name(&edev->edev, "%s", name);
        err = device_register(&edev->edev);
        if (err)
                goto err;
@@ -255,8 +255,8 @@ enclosure_component_register(struct enclosure_device *edev,
        ecomp->number = number;
        cdev = &ecomp->cdev;
        cdev->parent = get_device(&edev->edev);
-       if (name)
-               dev_set_name(cdev, name);
+       if (name && name[0])
+               dev_set_name(cdev, "%s", name);
        else
                dev_set_name(cdev, "%u", number);