aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2011-03-21 21:25:13 -0400
committerTheodore Ts'o <tytso@mit.edu>2011-03-21 21:25:13 -0400
commit4596fe07679ff0fae904515691ea747467614871 (patch)
treee15520e06d5c72702dc84e4eda4179ee9dc5c294 /fs/ext4
parent21149d611ecd0faf60f4ef94aa2bf8ed872f92bf (diff)
ext4: don't kfree uninitialized s_group_info members
We can call kfree on uninitialized members of the s_group_info array on an the error path. We can avoid this by kzalloc'ing the array. This doesn't entirely solve the oops on mount if we fail down this path; failed_mount4: frees the sbi, for one, which gets referenced later in the failed mount paths - I haven't worked that out yet. https://bugzilla.kernel.org/show_bug.cgi?id=30872 Reported-by: Eugene A. Shatokhin <dame_eugene@mail.ru> Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/mballoc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 2f6f0dd08fca..cdc84953f1d4 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2386,7 +2386,7 @@ static int ext4_mb_init_backend(struct super_block *sb)
2386 /* An 8TB filesystem with 64-bit pointers requires a 4096 byte 2386 /* An 8TB filesystem with 64-bit pointers requires a 4096 byte
2387 * kmalloc. A 128kb malloc should suffice for a 256TB filesystem. 2387 * kmalloc. A 128kb malloc should suffice for a 256TB filesystem.
2388 * So a two level scheme suffices for now. */ 2388 * So a two level scheme suffices for now. */
2389 sbi->s_group_info = kmalloc(array_size, GFP_KERNEL); 2389 sbi->s_group_info = kzalloc(array_size, GFP_KERNEL);
2390 if (sbi->s_group_info == NULL) { 2390 if (sbi->s_group_info == NULL) {
2391 printk(KERN_ERR "EXT4-fs: can't allocate buddy meta group\n"); 2391 printk(KERN_ERR "EXT4-fs: can't allocate buddy meta group\n");
2392 return -ENOMEM; 2392 return -ENOMEM;