Revert "Revert "sysfs: Fix sysfs owner and group.""
author黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:26:18 +0000 (22:26 +0800)
committer黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:26:18 +0000 (22:26 +0800)
This reverts commit dc136618cb23810dd3d4adfcb836b289cd528b4f.

fs/sysfs/inode.c

index e28cecf179f50d6c746312baac37b045a326d5da..753018af451f9e8dcb202f4a7bcb88113f4ec145 100644 (file)
@@ -94,30 +94,28 @@ int sysfs_setattr(struct dentry * dentry, struct iattr * iattr)
                if (!sd_attrs)
                        return -ENOMEM;
                sd->s_iattr = sd_attrs;
-       } else {
-               /* attributes were changed at least once in past */
-               iattrs = &sd_attrs->ia_iattr;
-
-               if (ia_valid & ATTR_UID)
-                       iattrs->ia_uid = iattr->ia_uid;
-               if (ia_valid & ATTR_GID)
-                       iattrs->ia_gid = iattr->ia_gid;
-               if (ia_valid & ATTR_ATIME)
-                       iattrs->ia_atime = timespec_trunc(iattr->ia_atime,
-                                       inode->i_sb->s_time_gran);
-               if (ia_valid & ATTR_MTIME)
-                       iattrs->ia_mtime = timespec_trunc(iattr->ia_mtime,
-                                       inode->i_sb->s_time_gran);
-               if (ia_valid & ATTR_CTIME)
-                       iattrs->ia_ctime = timespec_trunc(iattr->ia_ctime,
-                                       inode->i_sb->s_time_gran);
-               if (ia_valid & ATTR_MODE) {
-                       umode_t mode = iattr->ia_mode;
-
-                       if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID))
-                               mode &= ~S_ISGID;
-                       iattrs->ia_mode = sd->s_mode = mode;
-               }
+       }
+       iattrs = &sd_attrs->ia_iattr;
+
+       if (ia_valid & ATTR_UID)
+               iattrs->ia_uid = iattr->ia_uid;
+       if (ia_valid & ATTR_GID)
+               iattrs->ia_gid = iattr->ia_gid;
+       if (ia_valid & ATTR_ATIME)
+               iattrs->ia_atime = timespec_trunc(iattr->ia_atime,
+                               inode->i_sb->s_time_gran);
+       if (ia_valid & ATTR_MTIME)
+               iattrs->ia_mtime = timespec_trunc(iattr->ia_mtime,
+                               inode->i_sb->s_time_gran);
+       if (ia_valid & ATTR_CTIME)
+               iattrs->ia_ctime = timespec_trunc(iattr->ia_ctime,
+                               inode->i_sb->s_time_gran);
+       if (ia_valid & ATTR_MODE) {
+               umode_t mode = iattr->ia_mode;
+
+               if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID))
+                       mode &= ~S_ISGID;
+               iattrs->ia_mode = sd->s_mode = mode;
        }
        return error;
 }