Messages in this thread | | | Date | Tue, 22 Sep 2009 15:40:46 +0530 | From | Kamalesh Babulal <> | Subject | Re: [PATCH] fix error handling in load_module() |
| |
* Rusty Russell <rusty@rustcorp.com.au> [2009-09-22 14:35:21]:
> On Tue, 22 Sep 2009 12:11:21 am Tejun Heo wrote: > > Hello, Andrew. > > > > Andrew Morton wrote: > > > My reverse engineering of the secret, undocumented percpu_modfree() > > > indicates that its mad inventor intended that percpu_modfree(NULL) be a > > > valid thing to do. > > > > > > It calls free_percpu(), all implementations of which appear to secretly > > > support free_percpu(NULL). > > > > Eh... unfortunately, the original percpu_modfree() implementation > > didn't seem to support it. > > OK, I'll Andrew's fix for Tejun, and after his (spot-on!) comment about > percpu_modfree never taking NULL, I've fixed the one caller to match > the other two: > > Subject: module: don't call percpu_modfree on NULL pointer. > > The general one handles NULL, the static obsolescent > (CONFIG_HAVE_LEGACY_PER_CPU_AREA) one in module.c doesn't; Eric's > commit 720eba31 assumed it did, and various frobbings since then kept > that assumption. > > All other callers in module.c all protect it with an if; this effectively > does the same as free_init is only goto if we fail percpu_modalloc().
Thanks, the patch fixes the issue.
> Reported-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com> > Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> > Cc: Eric Dumazet <dada1@cosmosbay.com> > Cc: Masami Hiramatsu <mhiramat@redhat.com> > Cc: Américo Wang <xiyou.wangcong@gmail.com> > > diff --git a/kernel/module.c b/kernel/module.c > --- a/kernel/module.c > +++ b/kernel/module.c > @@ -2522,8 +2522,8 @@ static noinline struct module *load_modu > free_unload: > module_unload_free(mod); > #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP) > + percpu_modfree(mod->refptr); > free_init: > - percpu_modfree(mod->refptr); > #endif > module_free(mod, mod->module_init); > free_core: > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
Kamalesh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |