kill boilerplates around posix_acl_create_masq()
[pandora-kernel.git] / fs / gfs2 / acl.c
index cbc0715..a2dd63c 100644 (file)
@@ -75,17 +75,11 @@ static struct posix_acl *gfs2_acl_get(struct gfs2_inode *ip, int type)
  * Returns: errno
  */
 
-int gfs2_check_acl(struct inode *inode, int mask, unsigned int flags)
+int gfs2_check_acl(struct inode *inode, int mask)
 {
        struct posix_acl *acl;
        int error;
 
-       if (flags & IPERM_FLAG_RCU) {
-               if (!negative_cached_acl(inode, ACL_TYPE_ACCESS))
-                       return -ECHILD;
-               return -EAGAIN;
-       }
-
        acl = gfs2_acl_get(GFS2_I(inode), ACL_TYPE_ACCESS);
        if (IS_ERR(acl))
                return PTR_ERR(acl);
@@ -143,7 +137,7 @@ out:
 int gfs2_acl_create(struct gfs2_inode *dip, struct inode *inode)
 {
        struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
-       struct posix_acl *acl, *clone;
+       struct posix_acl *acl;
        mode_t mode = inode->i_mode;
        int error = 0;
 
@@ -168,16 +162,10 @@ int gfs2_acl_create(struct gfs2_inode *dip, struct inode *inode)
                        goto out;
        }
 
-       clone = posix_acl_clone(acl, GFP_NOFS);
-       error = -ENOMEM;
-       if (!clone)
-               goto out;
-       posix_acl_release(acl);
-       acl = clone;
-
-       error = posix_acl_create_masq(acl, &mode);
+       error = posix_acl_create(&acl, GFP_NOFS, &mode);
        if (error < 0)
-               goto out;
+               return error;
+
        if (error == 0)
                goto munge;
 
@@ -193,7 +181,7 @@ out:
 
 int gfs2_acl_chmod(struct gfs2_inode *ip, struct iattr *attr)
 {
-       struct posix_acl *acl, *clone;
+       struct posix_acl *acl;
        char *data;
        unsigned int len;
        int error;
@@ -204,25 +192,19 @@ int gfs2_acl_chmod(struct gfs2_inode *ip, struct iattr *attr)
        if (!acl)
                return gfs2_setattr_simple(ip, attr);
 
-       clone = posix_acl_clone(acl, GFP_NOFS);
+       error = posix_acl_chmod(&acl, GFP_NOFS, attr->ia_mode);
+       if (error)
+               return error;
+
+       len = posix_acl_to_xattr(acl, NULL, 0);
+       data = kmalloc(len, GFP_NOFS);
        error = -ENOMEM;
-       if (!clone)
+       if (data == NULL)
                goto out;
-       posix_acl_release(acl);
-       acl = clone;
-
-       error = posix_acl_chmod_masq(acl, attr->ia_mode);
-       if (!error) {
-               len = posix_acl_to_xattr(acl, NULL, 0);
-               data = kmalloc(len, GFP_NOFS);
-               error = -ENOMEM;
-               if (data == NULL)
-                       goto out;
-               posix_acl_to_xattr(acl, data, len);
-               error = gfs2_xattr_acl_chmod(ip, attr, data);
-               kfree(data);
-               set_cached_acl(&ip->i_inode, ACL_TYPE_ACCESS, acl);
-       }
+       posix_acl_to_xattr(acl, data, len);
+       error = gfs2_xattr_acl_chmod(ip, attr, data);
+       kfree(data);
+       set_cached_acl(&ip->i_inode, ACL_TYPE_ACCESS, acl);
 
 out:
        posix_acl_release(acl);