ext4: prevent memory leaks from ext4_mb_init_backend() on error path
In ext4_mb_init(), if the s_locality_group allocation fails it will currently cause the allocations made in ext4_mb_init_backend() to be leaked. Moving the ext4_mb_init_backend() allocation after the s_locality_group allocation avoids that problem. Signed-off-by: Yu Jian <yujian@whamcloud.com> Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
		
					parent
					
						
							
								48e6061bf4
							
						
					
				
			
			
				commit
				
					
						79a77c5ac3
					
				
			
		
					 1 changed files with 6 additions and 6 deletions
				
			
		|  | @ -2465,12 +2465,6 @@ int ext4_mb_init(struct super_block *sb, int needs_recovery) | ||||||
| 		i++; | 		i++; | ||||||
| 	} while (i <= sb->s_blocksize_bits + 1); | 	} while (i <= sb->s_blocksize_bits + 1); | ||||||
| 
 | 
 | ||||||
| 	/* init file for buddy data */ |  | ||||||
| 	ret = ext4_mb_init_backend(sb); |  | ||||||
| 	if (ret != 0) { |  | ||||||
| 		goto out; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	spin_lock_init(&sbi->s_md_lock); | 	spin_lock_init(&sbi->s_md_lock); | ||||||
| 	spin_lock_init(&sbi->s_bal_lock); | 	spin_lock_init(&sbi->s_bal_lock); | ||||||
| 
 | 
 | ||||||
|  | @ -2507,6 +2501,12 @@ int ext4_mb_init(struct super_block *sb, int needs_recovery) | ||||||
| 		spin_lock_init(&lg->lg_prealloc_lock); | 		spin_lock_init(&lg->lg_prealloc_lock); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/* init file for buddy data */ | ||||||
|  | 	ret = ext4_mb_init_backend(sb); | ||||||
|  | 	if (ret != 0) { | ||||||
|  | 		goto out; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if (sbi->s_proc) | 	if (sbi->s_proc) | ||||||
| 		proc_create_data("mb_groups", S_IRUGO, sbi->s_proc, | 		proc_create_data("mb_groups", S_IRUGO, sbi->s_proc, | ||||||
| 				 &ext4_mb_seq_groups_fops, sb); | 				 &ext4_mb_seq_groups_fops, sb); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yu Jian
				Yu Jian