aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorTiger Yang <tiger.yang@oracle.com>2010-07-15 23:21:23 -0400
committerJoel Becker <joel.becker@oracle.com>2010-08-07 13:43:25 -0400
commit6eda3dd33f8a0ce58ee56a11351758643a698db4 (patch)
tree15ebbb0a3aecfac4bc5734fe3ac51bc2017571cf /fs
parent9fe6206f400646a2322096b56c59891d530e8d51 (diff)
ocfs2: do not overwrite error codes in ocfs2_init_acl
Setting the acl while creating a new inode depends on the error codes of posix_acl_create_masq. This patch fix a issue of overwriting the error codes of it. Reported-by: Pawel Zawora <pzawora@gmail.com> Cc: <stable@kernel.org> [ .33, .34 ] Signed-off-by: Tiger Yang <tiger.yang@oracle.com> Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/ocfs2/acl.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c
index da702294d7e7..5a2177833210 100644
--- a/fs/ocfs2/acl.c
+++ b/fs/ocfs2/acl.c
@@ -344,7 +344,7 @@ int ocfs2_init_acl(handle_t *handle,
344{ 344{
345 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); 345 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
346 struct posix_acl *acl = NULL; 346 struct posix_acl *acl = NULL;
347 int ret = 0; 347 int ret = 0, ret2;
348 mode_t mode; 348 mode_t mode;
349 349
350 if (!S_ISLNK(inode->i_mode)) { 350 if (!S_ISLNK(inode->i_mode)) {
@@ -381,7 +381,12 @@ int ocfs2_init_acl(handle_t *handle,
381 mode = inode->i_mode; 381 mode = inode->i_mode;
382 ret = posix_acl_create_masq(clone, &mode); 382 ret = posix_acl_create_masq(clone, &mode);
383 if (ret >= 0) { 383 if (ret >= 0) {
384 ret = ocfs2_acl_set_mode(inode, di_bh, handle, mode); 384 ret2 = ocfs2_acl_set_mode(inode, di_bh, handle, mode);
385 if (ret2) {
386 mlog_errno(ret2);
387 ret = ret2;
388 goto cleanup;
389 }
385 if (ret > 0) { 390 if (ret > 0) {
386 ret = ocfs2_set_acl(handle, inode, 391 ret = ocfs2_set_acl(handle, inode,
387 di_bh, ACL_TYPE_ACCESS, 392 di_bh, ACL_TYPE_ACCESS,