Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83dfe53c authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim
Browse files

f2fs: fix reference leaks in f2fs_acl_create

Our f2fs_acl_create is copied and modified from posix_acl_create to avoid
deadlock bug when inline_dentry feature is enabled.

Now, we got reference leaks in posix_acl_create, and this has been fixed in
commit fed0b588 ("posix_acl: fix reference leaks in posix_acl_create")
by Omar Sandoval.
https://lkml.org/lkml/2015/2/9/5



Let's fix this issue in f2fs_acl_create too.

Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
Reviewed-by: default avatarChangman Lee <cm224.lee@ssamsung.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent bda19076
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -351,13 +351,11 @@ static int f2fs_acl_create(struct inode *dir, umode_t *mode,

	*acl = f2fs_acl_clone(p, GFP_NOFS);
	if (!*acl)
		return -ENOMEM;
		goto no_mem;

	ret = f2fs_acl_create_masq(*acl, mode);
	if (ret < 0) {
		posix_acl_release(*acl);
		return -ENOMEM;
	}
	if (ret < 0)
		goto no_mem_clone;

	if (ret == 0) {
		posix_acl_release(*acl);
@@ -378,6 +376,12 @@ static int f2fs_acl_create(struct inode *dir, umode_t *mode,
	*default_acl = NULL;
	*acl = NULL;
	return 0;

no_mem_clone:
	posix_acl_release(*acl);
no_mem:
	posix_acl_release(p);
	return -ENOMEM;
}

int f2fs_init_acl(struct inode *inode, struct inode *dir, struct page *ipage,