diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-13 22:10:28 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-13 22:10:28 +0200 |
commit | 2cc499b398c7bbcbf415017cd9588e699e04cd64 (patch) | |
tree | 40dab49f1c527830e91e4fe71052de350738e179 | |
parent | Merge tag 'media/v4.7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mch... (diff) | |
parent | cpu/hotplug: Keep enough storage space if SMP=n to avoid array out of bounds ... (diff) | |
download | linux-2cc499b398c7bbcbf415017cd9588e699e04cd64.tar.xz linux-2cc499b398c7bbcbf415017cd9588e699e04cd64.zip |
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core fixes from Ingo Molnar:
"Fix an objtool false positive plus an UP kernel memory corruption bug
on certain configs"
* 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
cpu/hotplug: Keep enough storage space if SMP=n to avoid array out of bounds scribble
objtool: Fix STACK_FRAME_NON_STANDARD macro checking for function symbols
-rw-r--r-- | kernel/cpu.c | 2 | ||||
-rw-r--r-- | tools/objtool/builtin-check.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/kernel/cpu.c b/kernel/cpu.c index d948e44c471e..7b61887f7ccd 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1201,6 +1201,8 @@ static struct cpuhp_step cpuhp_bp_states[] = { .teardown = takedown_cpu, .cant_stop = true, }, +#else + [CPUHP_BRINGUP_CPU] = { }, #endif }; diff --git a/tools/objtool/builtin-check.c b/tools/objtool/builtin-check.c index e8a1e69eb92c..25d803148f5c 100644 --- a/tools/objtool/builtin-check.c +++ b/tools/objtool/builtin-check.c @@ -122,10 +122,14 @@ static bool ignore_func(struct objtool_file *file, struct symbol *func) /* check for STACK_FRAME_NON_STANDARD */ if (file->whitelist && file->whitelist->rela) - list_for_each_entry(rela, &file->whitelist->rela->rela_list, list) - if (rela->sym->sec == func->sec && + list_for_each_entry(rela, &file->whitelist->rela->rela_list, list) { + if (rela->sym->type == STT_SECTION && + rela->sym->sec == func->sec && rela->addend == func->offset) return true; + if (rela->sym->type == STT_FUNC && rela->sym == func) + return true; + } /* check if it has a context switching instruction */ func_for_each_insn(file, func, insn) |