[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 06/16] x86/traps: Implement #CP handler and extend #PF for shadow stacks
On 02.05.2020 00:58, Andrew Cooper wrote: > @@ -1457,6 +1451,10 @@ void do_page_fault(struct cpu_user_regs *regs) > { > enum pf_type pf_type = spurious_page_fault(addr, regs); > > + /* Any fault on a shadow stack access is a bug in Xen. */ > + if ( error_code & PFEC_shstk ) > + goto fatal; Not going through the full spurious_page_fault() in this case would seem desirable, as would be at least a respective adjustment to __page_fault_type(). Perhaps such an adjustment could then avoid the change (and the need for goto) here? > @@ -1906,6 +1905,43 @@ void do_debug(struct cpu_user_regs *regs) > pv_inject_hw_exception(TRAP_debug, X86_EVENT_NO_EC); > } > > +void do_entry_CP(struct cpu_user_regs *regs) If there's a plan to change other exception handlers to this naming scheme too, I can live with the intermediate inconsistency. Otherwise, though, I'd prefer a name closer to what other handlers use, e.g. do_control_prot(). Same for the asm entry point then. > @@ -940,7 +944,8 @@ autogen_stubs: /* Automatically generated stubs. */ > entrypoint 1b > > /* Reserved exceptions, heading towards do_reserved_trap(). */ > - .elseif vec == TRAP_copro_seg || vec == TRAP_spurious_int || (vec > > TRAP_simd_error && vec < TRAP_nr) > + .elseif vec == TRAP_copro_seg || vec == TRAP_spurious_int || \ > + vec == TRAP_virtualisation || (vec > X86_EXC_CP && vec < > TRAP_nr) Use the shorter X86_EXC_VE here, since you don't want/need to retain what was there before? (I'd be fine with you changing the two other TRAP_* too at this occasion.) > --- a/xen/include/asm-x86/processor.h > +++ b/xen/include/asm-x86/processor.h > @@ -68,6 +68,7 @@ > #define PFEC_reserved_bit (_AC(1,U) << 3) > #define PFEC_insn_fetch (_AC(1,U) << 4) > #define PFEC_prot_key (_AC(1,U) << 5) > +#define PFEC_shstk (_AC(1,U) << 6) One too few padding blanks? Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |