forked from mirrors/linux
		
	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 fed0b588be ("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: Chao Yu <chao2.yu@samsung.com>
Reviewed-by: Changman Lee <cm224.lee@ssamsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
			
			
This commit is contained in:
		
							parent
							
								
									bda190760b
								
							
						
					
					
						commit
						83dfe53c18
					
				
					 1 changed files with 9 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue