diff options
Diffstat (limited to 'drivers/base/attribute_container.c')
| -rw-r--r-- | drivers/base/attribute_container.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/base/attribute_container.c b/drivers/base/attribute_container.c index 7370d7cf598..5bf25c6f966 100644 --- a/drivers/base/attribute_container.c +++ b/drivers/base/attribute_container.c @@ -320,9 +320,14 @@ attribute_container_add_attrs(struct class_device *classdev)  	struct class_device_attribute **attrs =	cont->attrs;  	int i, error; -	if (!attrs) +	BUG_ON(attrs && cont->grp); + +	if (!attrs && !cont->grp)  		return 0; +	if (cont->grp) +		return sysfs_create_group(&classdev->kobj, cont->grp); +  	for (i = 0; attrs[i]; i++) {  		error = class_device_create_file(classdev, attrs[i]);  		if (error) @@ -378,9 +383,14 @@ attribute_container_remove_attrs(struct class_device *classdev)  	struct class_device_attribute **attrs =	cont->attrs;  	int i; -	if (!attrs) +	if (!attrs && !cont->grp)  		return; +	if (cont->grp) { +		sysfs_remove_group(&classdev->kobj, cont->grp); +		return ; +	} +  	for (i = 0; attrs[i]; i++)  		class_device_remove_file(classdev, attrs[i]);  }  |