From: Rafael J. Wysocki Date: Thu, 12 Dec 2013 05:11:02 +0000 (+0100) Subject: Driver core: Fix device_add_attrs() error code path X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ecfbf6fd9c03be7dfe3eafc3846641b9d463607b;p=openwrt%2Fstaging%2Fblogic.git Driver core: Fix device_add_attrs() error code path If the addition of dev_attr_online fails, device_add_attrs() should remove device attribute groups as well as type and class attribute groups before returning an error code. Make that happen. Signed-off-by: Rafael J. Wysocki Acked-by: Toshi Kani Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/base/core.c b/drivers/base/core.c index aab43fbb8336..2b567177ef78 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -491,11 +491,13 @@ static int device_add_attrs(struct device *dev) if (device_supports_offline(dev) && !dev->offline_disabled) { error = device_create_file(dev, &dev_attr_online); if (error) - goto err_remove_type_groups; + goto err_remove_dev_groups; } return 0; + err_remove_dev_groups: + device_remove_groups(dev, dev->groups); err_remove_type_groups: if (type) device_remove_groups(dev, type->groups);