From d27e71902ff4f241a19fc6bdff7c6cadd358df2c Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 13 Feb 2007 22:39:26 -0800 Subject: [PATCH] --- yaml --- r: 48774 b: refs/heads/master c: 4aca67e5f54bf6ee439b5bdbc77007a547ad5b43 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/base/bus.c | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 38540ccbb6cb..b1b52b82658c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 873760fbf4d1c8c477a50386438303b6b89b6566 +refs/heads/master: 4aca67e5f54bf6ee439b5bdbc77007a547ad5b43 diff --git a/trunk/drivers/base/bus.c b/trunk/drivers/base/bus.c index 472810f8e6e7..253868e03c70 100644 --- a/trunk/drivers/base/bus.c +++ b/trunk/drivers/base/bus.c @@ -324,27 +324,25 @@ int bus_for_each_drv(struct bus_type * bus, struct device_driver * start, return error; } -static int device_add_attrs(struct bus_type * bus, struct device * dev) +static int device_add_attrs(struct bus_type *bus, struct device *dev) { int error = 0; int i; - if (bus->dev_attrs) { - for (i = 0; attr_name(bus->dev_attrs[i]); i++) { - error = device_create_file(dev,&bus->dev_attrs[i]); - if (error) - goto Err; + if (!bus->dev_attrs) + return 0; + + for (i = 0; attr_name(bus->dev_attrs[i]); i++) { + error = device_create_file(dev,&bus->dev_attrs[i]); + if (error) { + while (--i >= 0) + device_remove_file(dev, &bus->dev_attrs[i]); + break; } } - Done: return error; - Err: - while (--i >= 0) - device_remove_file(dev,&bus->dev_attrs[i]); - goto Done; } - static void device_remove_attrs(struct bus_type * bus, struct device * dev) { int i;