diff options
author | Eric Sandeen <sandeen@redhat.com> | 2011-03-21 21:25:13 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2011-03-21 21:25:13 -0400 |
commit | 4596fe07679ff0fae904515691ea747467614871 (patch) | |
tree | e15520e06d5c72702dc84e4eda4179ee9dc5c294 /fs/ext4/mballoc.c | |
parent | 21149d611ecd0faf60f4ef94aa2bf8ed872f92bf (diff) | |
download | linux-4596fe07679ff0fae904515691ea747467614871.tar.gz linux-4596fe07679ff0fae904515691ea747467614871.tar.bz2 linux-4596fe07679ff0fae904515691ea747467614871.zip |
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/mballoc.c')
-rw-r--r-- | fs/ext4/mballoc.c | 2 |
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) /* An 8TB filesystem with 64-bit pointers requires a 4096 byte * kmalloc. A 128kb malloc should suffice for a 256TB filesystem. * So a two level scheme suffices for now. */ - sbi->s_group_info = kmalloc(array_size, GFP_KERNEL); + sbi->s_group_info = kzalloc(array_size, GFP_KERNEL); if (sbi->s_group_info == NULL) { printk(KERN_ERR "EXT4-fs: can't allocate buddy meta group\n"); return -ENOMEM; |