Improve the error code path. Delete unnecessary sysfs file for example. Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx> --- mm/huge_memory.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) Index: linux/mm/huge_memory.c =================================================================== --- linux.orig/mm/huge_memory.c 2011-10-19 14:07:27.000000000 +0800 +++ linux/mm/huge_memory.c 2011-10-24 19:24:31.000000000 +0800 @@ -512,25 +512,23 @@ static int __init hugepage_init(void) err = sysfs_create_group(hugepage_kobj, &hugepage_attr_group); if (err) { printk(KERN_ERR "hugepage: failed register hugeage group\n"); - goto out; + goto delete_obj; } err = sysfs_create_group(hugepage_kobj, &khugepaged_attr_group); if (err) { printk(KERN_ERR "hugepage: failed register hugeage group\n"); - goto out; + goto remove_hp_group; } #endif err = khugepaged_slab_init(); if (err) - goto out; + goto remove_khp_group; err = mm_slots_hash_init(); - if (err) { - khugepaged_slab_free(); - goto out; - } + if (err) + goto free_slab; /* * By default disable transparent hugepages on smaller systems, @@ -544,7 +542,18 @@ static int __init hugepage_init(void) set_recommended_min_free_kbytes(); + return err; +free_slab: + khugepaged_slab_free(); +remove_khp_group: +#ifdef CONFIG_SYSFS + sysfs_remove_group(hugepage_kobj, &khugepaged_attr_group); +remove_hp_group: + sysfs_remove_group(hugepage_kobj, &hugepage_attr_group); +delete_obj: + kobject_put(hugepage_kobj); out: +#endif return err; } module_init(hugepage_init) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>