[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging-4.13] x86: clear per cpu stub page information in cpu_smpboot_free()
commit 721f2c323ca55c77857c93e7275b4a93a0e15e1f Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Wed Jan 15 14:24:47 2020 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Jan 15 14:24:47 2020 +0100 x86: clear per cpu stub page information in cpu_smpboot_free() cpu_smpboot_free() removes the stubs for the cpu going offline, but it isn't clearing the related percpu variables. This will result in crashes when a stub page is released due to all related cpus gone offline and one of those cpus going online later. Fix that by clearing stubs.addr and stubs.mfn in order to allocate a new stub page when needed, irrespective of whether the CPU gets parked or removed. Fixes: 2e6c8f182c9c50 ("x86: distinguish CPU offlining from CPU removal") Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Wei Liu <wl@xxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Tested-by: Tao Xu <tao3.xu@xxxxxxxxx> master commit: 774901788c5614798931a1cb2e20dd8b885f97ab master date: 2020-01-09 11:07:38 +0100 --- xen/arch/x86/smpboot.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index fa691b6ba0..dc8fdac1a1 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -942,6 +942,8 @@ static void cpu_smpboot_free(unsigned int cpu, bool remove) unmap_domain_page(stub_page); destroy_xen_mappings(per_cpu(stubs.addr, cpu) & PAGE_MASK, (per_cpu(stubs.addr, cpu) | ~PAGE_MASK) + 1); + per_cpu(stubs.addr, cpu) = 0; + per_cpu(stubs.mfn, cpu) = 0; if ( i == STUBS_PER_PAGE ) free_domheap_page(mfn_to_page(mfn)); } -- generated by git-patchbot for /home/xen/git/xen.git#staging-4.13 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |