posix_acl: Clear SGID bit when setting file permissions
[pandora-kernel.git] / fs / xfs / xfs_acl.c
index f224313..ebed5a8 100644 (file)
@@ -384,17 +384,14 @@ xfs_xattr_acl_set(struct dentry *dentry, const char *name,
                goto out_release;
 
        if (type == ACL_TYPE_ACCESS) {
-               umode_t mode = inode->i_mode;
-               error = posix_acl_equiv_mode(acl, &mode);
-
-               if (error <= 0) {
-                       posix_acl_release(acl);
-                       acl = NULL;
-
-                       if (error < 0)
-                               return error;
-               }
+               struct posix_acl *saved_acl = acl;
+               umode_t mode;
 
+               error = posix_acl_update_mode(inode, &mode, &acl);
+               if (error || acl == NULL)
+                       posix_acl_release(saved_acl);
+               if (error)
+                       return error;
                error = xfs_set_mode(dentry, inode, mode);
                if (error)
                        goto out_release;