Loading kernel/module.c +14 −12 Original line number Diff line number Diff line Loading @@ -2015,14 +2015,6 @@ static noinline struct module *load_module(void __user *umod, if (err < 0) goto free_mod; #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t), mod->name); if (!mod->refptr) { err = -ENOMEM; goto free_mod; } #endif if (pcpuindex) { /* We have a special allocation for this section. */ percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size, Loading @@ -2030,7 +2022,7 @@ static noinline struct module *load_module(void __user *umod, mod->name); if (!percpu) { err = -ENOMEM; goto free_percpu; goto free_mod; } sechdrs[pcpuindex].sh_flags &= ~(unsigned long)SHF_ALLOC; mod->percpu = percpu; Loading Loading @@ -2082,6 +2074,14 @@ static noinline struct module *load_module(void __user *umod, /* Module has been moved. */ mod = (void *)sechdrs[modindex].sh_addr; #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t), mod->name); if (!mod->refptr) { err = -ENOMEM; goto free_init; } #endif /* Now we've moved module, initialize linked lists, etc. */ module_unload_init(mod); Loading Loading @@ -2288,15 +2288,17 @@ static noinline struct module *load_module(void __user *umod, ftrace_release(mod->module_core, mod->core_size); free_unload: module_unload_free(mod); free_init: #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) percpu_modfree(mod->refptr); #endif module_free(mod, mod->module_init); free_core: module_free(mod, mod->module_core); /* mod will be freed with core. Don't access it beyond this line! */ free_percpu: if (percpu) percpu_modfree(percpu); #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) percpu_modfree(mod->refptr); #endif free_mod: kfree(args); free_hdr: Loading Loading
kernel/module.c +14 −12 Original line number Diff line number Diff line Loading @@ -2015,14 +2015,6 @@ static noinline struct module *load_module(void __user *umod, if (err < 0) goto free_mod; #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t), mod->name); if (!mod->refptr) { err = -ENOMEM; goto free_mod; } #endif if (pcpuindex) { /* We have a special allocation for this section. */ percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size, Loading @@ -2030,7 +2022,7 @@ static noinline struct module *load_module(void __user *umod, mod->name); if (!percpu) { err = -ENOMEM; goto free_percpu; goto free_mod; } sechdrs[pcpuindex].sh_flags &= ~(unsigned long)SHF_ALLOC; mod->percpu = percpu; Loading Loading @@ -2082,6 +2074,14 @@ static noinline struct module *load_module(void __user *umod, /* Module has been moved. */ mod = (void *)sechdrs[modindex].sh_addr; #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t), mod->name); if (!mod->refptr) { err = -ENOMEM; goto free_init; } #endif /* Now we've moved module, initialize linked lists, etc. */ module_unload_init(mod); Loading Loading @@ -2288,15 +2288,17 @@ static noinline struct module *load_module(void __user *umod, ftrace_release(mod->module_core, mod->core_size); free_unload: module_unload_free(mod); free_init: #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) percpu_modfree(mod->refptr); #endif module_free(mod, mod->module_init); free_core: module_free(mod, mod->module_core); /* mod will be freed with core. Don't access it beyond this line! */ free_percpu: if (percpu) percpu_modfree(percpu); #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) percpu_modfree(mod->refptr); #endif free_mod: kfree(args); free_hdr: Loading