jfs: Don't clear SGID when inheriting ACLs
[sfrench/cifs-2.6.git] / fs / jfs / acl.c
index 7bc186f4ed4de6837b94ab8670cca7043122b28c..1be45c8d460da98e52160df03b0b583098185404 100644 (file)
@@ -77,13 +77,6 @@ static int __jfs_set_acl(tid_t tid, struct inode *inode, int type,
        switch (type) {
        case ACL_TYPE_ACCESS:
                ea_name = XATTR_NAME_POSIX_ACL_ACCESS;
-               if (acl) {
-                       rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-                       if (rc)
-                               return rc;
-                       inode->i_ctime = current_time(inode);
-                       mark_inode_dirty(inode);
-               }
                break;
        case ACL_TYPE_DEFAULT:
                ea_name = XATTR_NAME_POSIX_ACL_DEFAULT;
@@ -118,9 +111,17 @@ int jfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 
        tid = txBegin(inode->i_sb, 0);
        mutex_lock(&JFS_IP(inode)->commit_mutex);
+       if (type == ACL_TYPE_ACCESS && acl) {
+               rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+               if (rc)
+                       goto end_tx;
+               inode->i_ctime = current_time(inode);
+               mark_inode_dirty(inode);
+       }
        rc = __jfs_set_acl(tid, inode, type, acl);
        if (!rc)
                rc = txCommit(tid, 1, &inode, 0);
+end_tx:
        txEnd(tid);
        mutex_unlock(&JFS_IP(inode)->commit_mutex);
        return rc;