mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 15:18:19 +00:00
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>
This commit is contained in:
parent
9fe6206f40
commit
6eda3dd33f
1 changed files with 7 additions and 2 deletions
|
@ -344,7 +344,7 @@ int ocfs2_init_acl(handle_t *handle,
|
||||||
{
|
{
|
||||||
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
||||||
struct posix_acl *acl = NULL;
|
struct posix_acl *acl = NULL;
|
||||||
int ret = 0;
|
int ret = 0, ret2;
|
||||||
mode_t mode;
|
mode_t mode;
|
||||||
|
|
||||||
if (!S_ISLNK(inode->i_mode)) {
|
if (!S_ISLNK(inode->i_mode)) {
|
||||||
|
@ -381,7 +381,12 @@ int ocfs2_init_acl(handle_t *handle,
|
||||||
mode = inode->i_mode;
|
mode = inode->i_mode;
|
||||||
ret = posix_acl_create_masq(clone, &mode);
|
ret = posix_acl_create_masq(clone, &mode);
|
||||||
if (ret >= 0) {
|
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) {
|
if (ret > 0) {
|
||||||
ret = ocfs2_set_acl(handle, inode,
|
ret = ocfs2_set_acl(handle, inode,
|
||||||
di_bh, ACL_TYPE_ACCESS,
|
di_bh, ACL_TYPE_ACCESS,
|
||||||
|
|
Loading…
Reference in a new issue