module: fix crash in get_ksymbol() when oopsing in module init
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 5 Aug 2010 18:59:08 +0000 (12:59 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 5 Aug 2010 03:29:08 +0000 (12:59 +0930)
commit511ca6ae43fbe0a7c9e0b50ad275f7ef24ef3b58
tree596d11de1a99dfce758465de009a97ccdb7da011
parenteded41c1c6466081e0eb00d38719c6e6ee81a5d4
module: fix crash in get_ksymbol() when oopsing in module init

Andrew had the sole pleasure of tickling this bug in linux-next; when we set
up "info->strtab" it's pointing into the temporary copy of the module.  For
most uses that is fine, but kallsyms keeps a pointer around during module
load (inside mod->strtab).

If we oops for some reason inside a module's init function, kallsyms will use
the mod->strtab pointer into the now-freed temporary module copy.

(Later oopses work fine: after init we overwrite mod->strtab to point to a
 compacted core-only strtab).

Reported-by: Andrew "Grumpy" Morton <akpm@linux-foundation.org>
Signed-off-by: Rusty "Buggy" Russell <rusty@rustcorp.com.au>
Tested-by: Andrew "Happy" Morton <akpm@linux-foundation.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
kernel/module.c