summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvmallika <vmallika@redhat.com>2016-04-11 15:44:16 +0530
committerJeff Darcy <jdarcy@redhat.com>2016-04-11 08:37:36 -0700
commit65575da24088ba4602b94db649be12376b87484f (patch)
tree5c067f19b1cbd8892764015124b3b97f4d6148a6
parente1004679563ef17c460f83098983baf105655712 (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.c36
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);