diff options
| author | vmallika <vmallika@redhat.com> | 2016-04-11 15:44:16 +0530 | 
|---|---|---|
| committer | Jeff Darcy <jdarcy@redhat.com> | 2016-04-11 08:37:36 -0700 | 
| commit | 65575da24088ba4602b94db649be12376b87484f (patch) | |
| tree | 5c067f19b1cbd8892764015124b3b97f4d6148a6 | |
| parent | e1004679563ef17c460f83098983baf105655712 (diff) | |
posix_acl: create inode ctx for posix_acl_get
Change-Id: Ibe5b00cd4b5d896133adc61f65094d783c492ed4
BUG: 1325822
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/13961
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
| -rw-r--r-- | xlators/system/posix-acl/src/posix-acl.c | 36 | 
1 files changed, 26 insertions, 10 deletions
diff --git a/xlators/system/posix-acl/src/posix-acl.c b/xlators/system/posix-acl/src/posix-acl.c index 688e60914dc..3f4d40af48e 100644 --- a/xlators/system/posix-acl/src/posix-acl.c +++ b/xlators/system/posix-acl/src/posix-acl.c @@ -855,17 +855,25 @@ posix_acl_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int op_ret, int op_errno, inode_t *inode,                        struct iatt *buf, dict_t *xattr, struct iatt *postparent)  { -        struct posix_acl     *acl_access = NULL; +        struct posix_acl     *acl_access  = NULL;          struct posix_acl     *acl_default = NULL; -        struct posix_acl     *old_access = NULL; +        struct posix_acl     *old_access  = NULL;          struct posix_acl     *old_default = NULL; -        data_t               *data = NULL; -        int                   ret = 0; -        dict_t               *my_xattr = NULL; +        struct posix_acl_ctx *ctx         = NULL; +        data_t               *data        = NULL; +        int                   ret         = 0; +        dict_t               *my_xattr    = NULL;          if (op_ret != 0)                  goto unwind; +        ctx = posix_acl_ctx_new (inode, this); +        if (!ctx) { +                op_ret = -1; +                op_errno = ENOMEM; +                goto unwind; +        } +          ret = posix_acl_get (inode, this, &old_access, &old_default);          data = dict_get (xattr, POSIX_ACL_ACCESS_XATTR); @@ -1626,11 +1634,12 @@ posix_acl_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          int op_ret, int op_errno, gf_dirent_t *entries,                          dict_t *xdata)  { -        gf_dirent_t      *entry       = NULL; -        struct posix_acl *acl_access  = NULL; -        struct posix_acl *acl_default = NULL; -        data_t           *data        = NULL; -        int               ret         = 0; +        gf_dirent_t          *entry       = NULL; +        struct posix_acl     *acl_access  = NULL; +        struct posix_acl     *acl_default = NULL; +        struct posix_acl_ctx *ctx         = NULL; +        data_t               *data        = NULL; +        int                   ret         = 0;          if (op_ret <= 0)                  goto unwind; @@ -1640,6 +1649,13 @@ posix_acl_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  if (!entry->dict || !entry->inode)                          continue; +                ctx = posix_acl_ctx_new (entry->inode, this); +                if (!ctx) { +                        op_ret = -1; +                        op_errno = ENOMEM; +                        goto unwind; +                } +                  ret = posix_acl_get (entry->inode, this,                                       &acl_access, &acl_default);  | 
