f2fs: fix reference leaks in f2fs_acl_create
PATCH 1/1 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 fed0b588be2f ("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.
--- fs/f2fs/acl.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
fs/f2fs/acl.c +9 -5
@@ -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 @@ no_acl: *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,
Signature · 1 line
2.3.0
Quoted 52 lines · Chao Yu
Our
f2fs_acl_createis copied and modified fromposix_acl_createto avoid deadlock bug wheninline_dentryfeature is enabled.Now, we got reference leaks in
posix_acl_create, and this has been fixed in commitfed0b588be2f("posix_acl: fix reference leaks inposix_acl_create") by Omar Sandoval.
https://lkml.org/lkml/2015/2/9/5Let's fix this issue in
f2fs_acl_createtoo.Signed-off-by Chao Yu <[email protected]>--- fs/f2fs/acl.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)fs/f2fs/acl.c +9
-5@@ -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 @@ no_acl: *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,Signature · 1 line
2.3.0