diff options
author | Tiger Yang <tiger.yang@oracle.com> | 2010-07-16 11:21:23 +0800 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-08-07 10:43:25 -0700 |
commit | 6eda3dd33f8a0ce58ee56a11351758643a698db4 (patch) | |
tree | 15ebbb0a3aecfac4bc5734fe3ac51bc2017571cf /fs | |
parent | 9fe6206f400646a2322096b56c59891d530e8d51 (diff) | |
download | talos-op-linux-6eda3dd33f8a0ce58ee56a11351758643a698db4.tar.gz talos-op-linux-6eda3dd33f8a0ce58ee56a11351758643a698db4.zip |
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.c | 9 |
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, { struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); struct posix_acl *acl = NULL; - int ret = 0; + int ret = 0, ret2; mode_t mode; if (!S_ISLNK(inode->i_mode)) { @@ -381,7 +381,12 @@ int ocfs2_init_acl(handle_t *handle, mode = inode->i_mode; ret = posix_acl_create_masq(clone, &mode); if (ret >= 0) { - ret = ocfs2_acl_set_mode(inode, di_bh, handle, mode); + ret2 = ocfs2_acl_set_mode(inode, di_bh, handle, mode); + if (ret2) { + mlog_errno(ret2); + ret = ret2; + goto cleanup; + } if (ret > 0) { ret = ocfs2_set_acl(handle, inode, di_bh, ACL_TYPE_ACCESS, |