|
@@ -528,9 +528,12 @@ static int device_add_attrs(struct device *dev)
|
|
|
int error;
|
|
|
|
|
|
if (class) {
|
|
|
- error = device_add_attributes(dev, class->dev_attrs);
|
|
|
+ error = device_add_groups(dev, class->dev_groups);
|
|
|
if (error)
|
|
|
return error;
|
|
|
+ error = device_add_attributes(dev, class->dev_attrs);
|
|
|
+ if (error)
|
|
|
+ goto err_remove_class_groups;
|
|
|
error = device_add_bin_attributes(dev, class->dev_bin_attrs);
|
|
|
if (error)
|
|
|
goto err_remove_class_attrs;
|
|
@@ -563,6 +566,9 @@ static int device_add_attrs(struct device *dev)
|
|
|
err_remove_class_attrs:
|
|
|
if (class)
|
|
|
device_remove_attributes(dev, class->dev_attrs);
|
|
|
+ err_remove_class_groups:
|
|
|
+ if (class)
|
|
|
+ device_remove_groups(dev, class->dev_groups);
|
|
|
|
|
|
return error;
|
|
|
}
|
|
@@ -581,6 +587,7 @@ static void device_remove_attrs(struct device *dev)
|
|
|
if (class) {
|
|
|
device_remove_attributes(dev, class->dev_attrs);
|
|
|
device_remove_bin_attributes(dev, class->dev_bin_attrs);
|
|
|
+ device_remove_groups(dev, class->dev_groups);
|
|
|
}
|
|
|
}
|
|
|
|