sysfs, kernfs: introduce kernfs_setattr()
Introduce kernfs setattr interface - kernfs_setattr(). sysfs_sd_setattr() is renamed to __kernfs_setattr() and kernfs_setattr() is a simple wrapper around it with sysfs_mutex locking. sysfs_chmod_file() is updated to get an explicit ref on kobj->sd and then invoke kernfs_setattr() so that it doesn't have to use internal interface. This patch doesn't introduce any behavior differences. v2: Dummy implementation for !CONFIG_SYSFS updated to return -ENOSYS. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
890ece160c
commit
5d60418e54
@@ -922,19 +922,16 @@ int sysfs_chmod_file(struct kobject *kobj, const struct attribute *attr,
|
||||
struct iattr newattrs;
|
||||
int rc;
|
||||
|
||||
mutex_lock(&sysfs_mutex);
|
||||
|
||||
rc = -ENOENT;
|
||||
sd = sysfs_find_dirent(kobj->sd, attr->name, NULL);
|
||||
sd = sysfs_get_dirent(kobj->sd, attr->name);
|
||||
if (!sd)
|
||||
goto out;
|
||||
return -ENOENT;
|
||||
|
||||
newattrs.ia_mode = (mode & S_IALLUGO) | (sd->s_mode & ~S_IALLUGO);
|
||||
newattrs.ia_valid = ATTR_MODE;
|
||||
rc = sysfs_sd_setattr(sd, &newattrs);
|
||||
|
||||
out:
|
||||
mutex_unlock(&sysfs_mutex);
|
||||
rc = kernfs_setattr(sd, &newattrs);
|
||||
|
||||
sysfs_put(sd);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysfs_chmod_file);
|
||||
|
Reference in New Issue
Block a user