forked from luck/tmp_suning_uos_patched
ext4: fix a race which could leak memory in ext4_groupinfo_create_slab()
In ext4_groupinfo_create_slab, we create ext4_groupinfo_caches within ext4_grpinfo_slab_create_mutex, but set it outside the lock, and there does exist some case that we may create it twice and causes a memory leak. So set it before we call mutex_unlock. Signed-off-by: Tao Ma <boyu.mt@taobao.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
598dbdf243
commit
823ba01fc0
@ -2404,14 +2404,14 @@ static int ext4_groupinfo_create_slab(size_t size)
|
|||||||
slab_size, 0, SLAB_RECLAIM_ACCOUNT,
|
slab_size, 0, SLAB_RECLAIM_ACCOUNT,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
ext4_groupinfo_caches[cache_index] = cachep;
|
||||||
|
|
||||||
mutex_unlock(&ext4_grpinfo_slab_create_mutex);
|
mutex_unlock(&ext4_grpinfo_slab_create_mutex);
|
||||||
if (!cachep) {
|
if (!cachep) {
|
||||||
printk(KERN_EMERG "EXT4: no memory for groupinfo slab cache\n");
|
printk(KERN_EMERG "EXT4: no memory for groupinfo slab cache\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
ext4_groupinfo_caches[cache_index] = cachep;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user