diff -urN linux-2.4.27-wt1-376-acl/fs/nfs/dir.c linux-2.4.27-wt1-376-acl-fix/fs/nfs/dir.c --- linux-2.4.27-wt1-376-acl/fs/nfs/dir.c Mon Aug 16 00:08:13 2004 +++ linux-2.4.27-wt1-376-acl-fix/fs/nfs/dir.c Mon Aug 16 00:12:49 2004 @@ -1263,7 +1263,8 @@ return -EACCES; } - if (!NFS_PROTO(inode)->access) + if (NFS_SERVER(inode)->flags & NFS_MOUNT_NOACL || + !NFS_PROTO(inode)->access) goto out_notsup; cred = rpcauth_lookupcred(NFS_CLIENT(inode)->cl_auth, 0); if (cache->cred == cred --- ./fs/namei.c.orig Wed Aug 18 22:42:11 2004 +++ ./fs/namei.c Wed Aug 18 22:43:14 2004 @@ -1080,8 +1080,9 @@ up(&dir->d_inode->i_sem); goto exit; } - error = vfs_create(dir->d_inode, dentry, - mode & ~current->fs->umask); + if (!IS_POSIXACL(dir->d_inode)) + mode &= ~current->fs->umask; + error = vfs_create(dir->d_inode, dentry, mode); up(&dir->d_inode->i_sem); dput(nd->dentry); nd->dentry = dentry;