diff options
Diffstat (limited to 'fs/sysfs')
| -rw-r--r-- | fs/sysfs/group.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c index eeb0e3099421..138676463336 100644 --- a/fs/sysfs/group.c +++ b/fs/sysfs/group.c @@ -118,11 +118,13 @@ static int internal_create_group(struct kobject *kobj, int update,  	/* Updates may happen before the object has been instantiated */  	if (unlikely(update && !kobj->sd))  		return -EINVAL; +  	if (!grp->attrs && !grp->bin_attrs) { -		WARN(1, "sysfs: (bin_)attrs not set by subsystem for group: %s/%s\n", -			kobj->name, grp->name ?: ""); -		return -EINVAL; +		pr_debug("sysfs: (bin_)attrs not set by subsystem for group: %s/%s, skipping\n", +			 kobj->name, grp->name ?: ""); +		return 0;  	} +  	kobject_get_ownership(kobj, &uid, &gid);  	if (grp->name) {  		if (update) { @@ -142,8 +144,10 @@ static int internal_create_group(struct kobject *kobj, int update,  				return PTR_ERR(kn);  			}  		} -	} else +	} else {  		kn = kobj->sd; +	} +  	kernfs_get(kn);  	error = create_files(kn, kobj, uid, gid, grp, update);  	if (error) {  | 
