* [patch 0/2] smp/hotplug: Fix last minute wreckage @ 2016-12-26 21:58 Thomas Gleixner 2016-12-26 21:58 ` [patch 1/2] smp/hotplug: Undo tglxs brainfart Thomas Gleixner 2016-12-26 21:58 ` [patch 2/2] x86/mce/AMD: Make the init code more robust Thomas Gleixner 0 siblings, 2 replies; 4+ messages in thread From: Thomas Gleixner @ 2016-12-26 21:58 UTC (permalink / raw) To: Linus Torvalds Cc: LKML, Ingo Molnar, Borislav Petkov, Peter Zijlstra, Markus Trippelsdorf, Boris Ostrovsky The last minute changes to the hotplug core code wreckaged the dynamically allocated states. The AMD mce code crashes as a result. Fix the brainfart and make the AMD code more robust. Thanks, tglx ^ permalink raw reply [flat|nested] 4+ messages in thread
* [patch 1/2] smp/hotplug: Undo tglxs brainfart 2016-12-26 21:58 [patch 0/2] smp/hotplug: Fix last minute wreckage Thomas Gleixner @ 2016-12-26 21:58 ` Thomas Gleixner 2016-12-26 21:58 ` [patch 2/2] x86/mce/AMD: Make the init code more robust Thomas Gleixner 1 sibling, 0 replies; 4+ messages in thread From: Thomas Gleixner @ 2016-12-26 21:58 UTC (permalink / raw) To: Linus Torvalds Cc: LKML, Ingo Molnar, Borislav Petkov, Peter Zijlstra, Markus Trippelsdorf, Boris Ostrovsky [-- Attachment #1: smp-hotplug--Undo-tglxs-brainfart.patch --] [-- Type: text/plain, Size: 1306 bytes --] The attempt to prevent overwriting an active state resulted in a disaster which effectively disables all dynamically allocated hotplug states. Cleanup the mess. Fixes: dc280d936239 ("cpu/hotplug: Prevent overwriting of callbacks") Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- kernel/cpu.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1471,6 +1471,7 @@ int __cpuhp_setup_state(enum cpuhp_state bool multi_instance) { int cpu, ret = 0; + bool dynstate; if (cpuhp_cb_check(state) || !name) return -EINVAL; @@ -1480,6 +1481,12 @@ int __cpuhp_setup_state(enum cpuhp_state ret = cpuhp_store_callbacks(state, name, startup, teardown, multi_instance); + dynstate = state == CPUHP_AP_ONLINE_DYN; + if (ret > 0 && dynstate) { + state = ret; + ret = 0; + } + if (ret || !invoke || !startup) goto out; @@ -1508,7 +1515,7 @@ int __cpuhp_setup_state(enum cpuhp_state * If the requested state is CPUHP_AP_ONLINE_DYN, return the * dynamically allocated state in case of success. */ - if (!ret && state == CPUHP_AP_ONLINE_DYN) + if (!ret && dynstate) return state; return ret; } ^ permalink raw reply [flat|nested] 4+ messages in thread
* [patch 2/2] x86/mce/AMD: Make the init code more robust 2016-12-26 21:58 [patch 0/2] smp/hotplug: Fix last minute wreckage Thomas Gleixner 2016-12-26 21:58 ` [patch 1/2] smp/hotplug: Undo tglxs brainfart Thomas Gleixner @ 2016-12-26 21:58 ` Thomas Gleixner 2016-12-27 7:06 ` Borislav Petkov 1 sibling, 1 reply; 4+ messages in thread From: Thomas Gleixner @ 2016-12-26 21:58 UTC (permalink / raw) To: Linus Torvalds Cc: LKML, Ingo Molnar, Borislav Petkov, Peter Zijlstra, Markus Trippelsdorf, Boris Ostrovsky [-- Attachment #1: x86-mce-AMD--Make-the-init-code-more-robust.patch --] [-- Type: text/plain, Size: 704 bytes --] If mce_device_init() fails then the mce device pointer is NULL and the AMD mce code happily dereferences it. Add a sanity check. Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- arch/x86/kernel/cpu/mcheck/mce_amd.c | 3 +++ 1 file changed, 3 insertions(+) --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c @@ -1182,6 +1182,9 @@ static int threshold_create_bank(unsigne const char *name = get_name(bank, NULL); int err = 0; + if (!dev) + return -ENODEV; + if (is_shared_bank(bank)) { nb = node_to_amd_nb(amd_get_nb_id(cpu)); ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [patch 2/2] x86/mce/AMD: Make the init code more robust 2016-12-26 21:58 ` [patch 2/2] x86/mce/AMD: Make the init code more robust Thomas Gleixner @ 2016-12-27 7:06 ` Borislav Petkov 0 siblings, 0 replies; 4+ messages in thread From: Borislav Petkov @ 2016-12-27 7:06 UTC (permalink / raw) To: Thomas Gleixner Cc: Linus Torvalds, LKML, Ingo Molnar, Peter Zijlstra, Markus Trippelsdorf, Boris Ostrovsky On Mon, Dec 26, 2016 at 10:58:20PM +0100, Thomas Gleixner wrote: > If mce_device_init() fails then the mce device pointer is NULL and the AMD > mce code happily dereferences it. > > Add a sanity check. > > Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> > Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > --- > arch/x86/kernel/cpu/mcheck/mce_amd.c | 3 +++ > 1 file changed, 3 insertions(+) > > --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c > +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c > @@ -1182,6 +1182,9 @@ static int threshold_create_bank(unsigne > const char *name = get_name(bank, NULL); > int err = 0; > > + if (!dev) > + return -ENODEV; > + > if (is_shared_bank(bank)) { > nb = node_to_amd_nb(amd_get_nb_id(cpu)); Acked-by: Borislav Petkov <bp@suse.de> >From looking at that code, though, it could use some more involved straightening later. /me puts it on TODO list. -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply. -- ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-12-27 7:07 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-12-26 21:58 [patch 0/2] smp/hotplug: Fix last minute wreckage Thomas Gleixner 2016-12-26 21:58 ` [patch 1/2] smp/hotplug: Undo tglxs brainfart Thomas Gleixner 2016-12-26 21:58 ` [patch 2/2] x86/mce/AMD: Make the init code more robust Thomas Gleixner 2016-12-27 7:06 ` Borislav Petkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).