[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/4] x86: move syscall trampolines off the stack
>>> On 19.05.15 at 18:59, <andrew.cooper3@xxxxxxxxxx> wrote: > On 18/05/15 13:46, Jan Beulich wrote: >> @@ -616,6 +653,24 @@ static void cpu_smpboot_free(unsigned in >> free_cpumask_var(per_cpu(cpu_sibling_mask, cpu)); >> free_cpumask_var(per_cpu(cpu_core_mask, cpu)); >> >> + if ( per_cpu(stubs.addr, cpu) ) >> + { >> + unsigned long mfn = per_cpu(stubs.mfn, cpu); >> + unsigned char *stub_page = map_domain_page(mfn); >> + unsigned int i; >> + >> + memset(stub_page + (cpu & (STUBS_PER_PAGE - 1)) * STUB_BUF_SIZE, >> + 0xcc, STUB_BUF_SIZE); >> + for ( i = 0; i < STUBS_PER_PAGE; ++i ) >> + if ( stub_page[i * STUB_BUF_SIZE] != 0xcc) >> + break; > > There is a race condition between allocate and free, as > write_stub_trampoline() is written by the cpu itself. Just finding 0xcc > here doesn't mean there isn't a different cpu in the process of coming > up and intending to use the stub page. No, there is no race afaict: percpu_traps_init() gets called before a CPU is marked online and hence before __cpu_up() returns, and thus before the CPU hotplug lock gets dropped, so there can't be any CPUs going down concurrently. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |