[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] xen/x86: fix PV trap handling on secondary processors
On 9/20/21 12:15 PM, Jan Beulich wrote: > The initial observation was that in PV mode under Xen 32-bit user space > didn't work anymore. Attempts of system calls ended in #GP(0x402). All > of the sudden the vector 0x80 handler was not in place anymore. As it > turns out up to 5.13 redundant initialization did occur: Once from > cpu_initialize_context() (through its VCPUOP_initialise hypercall) and a > 2nd time while each CPU was brought fully up. This 2nd initialization is > now gone, uncovering that the 1st one was flawed: Unlike for the > set_trap_table hypercall, a full virtual IDT needs to be specified here; > the "vector" fields of the individual entries are of no interest. With > many (kernel) IDT entries still(?) (i.e. at that point at least) empty, > the syscall vector 0x80 ended up in slot 0x20 of the virtual IDT, thus > becoming the domain's handler for vector 0x20. > > Make xen_convert_trap_info() fit for either purpose, leveraging the fact > that on the xen_copy_trap_info() path the table starts out zero-filled. > This includes moving out the writing of the sentinel, which would also > have lead to a buffer overrun in the xen_copy_trap_info() case if all > (kernel) IDT entries were populated. Convert the writing of the sentinel > to clearing of the entire table entry rather than just the address > field. > > (I didn't bother trying to identify the commit which uncovered the issue > in 5.14; the commit named below is the one which actually introduced the > bad code.) > > Fixes: f87e4cac4f4e ("xen: SMP guest support") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |