posix_acl: Clear SGID bit when setting file permissions
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / ocfs2 / acl.c
index 8a404576fb26557eb8578e21f66d0277a94a9e76..51ff9506cb0f3647ebc294e917271b9eb6930688 100644 (file)
@@ -274,20 +274,14 @@ static int ocfs2_set_acl(handle_t *handle,
        case ACL_TYPE_ACCESS:
                name_index = OCFS2_XATTR_INDEX_POSIX_ACL_ACCESS;
                if (acl) {
-                       umode_t mode = inode->i_mode;
-                       ret = posix_acl_equiv_mode(acl, &mode);
-                       if (ret < 0)
+                       umode_t mode;
+                       ret = posix_acl_update_mode(inode, &mode, &acl);
+                       if (ret)
+                               return ret;
+                       ret = ocfs2_acl_set_mode(inode, di_bh,
+                                                handle, mode);
+                       if (ret)
                                return ret;
-                       else {
-                               if (ret == 0)
-                                       acl = NULL;
-
-                               ret = ocfs2_acl_set_mode(inode, di_bh,
-                                                        handle, mode);
-                               if (ret)
-                                       return ret;
-
-                       }
                }
                break;
        case ACL_TYPE_DEFAULT: