[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/3] x86/entry: Make #PF/NMI/INT0x82 more amenable to livepatching
On Tue, Jan 23, 2024 at 10:22:10AM +0100, Jan Beulich wrote: > On 22.01.2024 19:17, Andrew Cooper wrote: > > It is bad form to have inter-function fallthrough. It only functions right > > now because alignment padding bytes are NOPs. > > But that's a requirement anyway in executable sections. Really? I was under the impression we wanted to replace the padding nops with rets maybe, or even poison the padding with int3 or ud2. > > --- a/xen/arch/x86/x86_64/compat/entry.S > > +++ b/xen/arch/x86/x86_64/compat/entry.S > > @@ -29,6 +29,7 @@ FUNC(entry_int82) > > > > mov %rsp, %rdi > > call do_entry_int82 > > + jmp compat_test_all_events > > END(entry_int82) > > > > /* %rbx: struct vcpu */ > > diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S > > index c3f6b667a72a..fc64ef1fd460 100644 > > --- a/xen/arch/x86/x86_64/entry.S > > +++ b/xen/arch/x86/x86_64/entry.S > > @@ -723,7 +723,9 @@ END(common_interrupt) > > FUNC(entry_PF) > > ENDBR64 > > movl $X86_EXC_PF, 4(%rsp) > > + jmp handle_exception > > END(entry_PF) > > + > > /* No special register assumptions. */ > > FUNC(handle_exception, 0) > > ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP > > @@ -1023,6 +1025,7 @@ FUNC(entry_NMI) > > ENDBR64 > > pushq $0 > > movl $X86_EXC_NMI, 4(%rsp) > > + jmp handle_ist_exception > > END(entry_NMI) > > > > FUNC(handle_ist_exception) > > Hmm, so here you (partly) do what I was meaning to do in the one patch > left from the entry point annotations series, "common: honor > CONFIG_CC_SPLIT_SECTIONS also for assembly functions". However, I'm > wrapping the JMPs there in #ifdef CONFIG_CC_SPLIT_SECTIONS. Thoughts? > I view the JMPs as pretty useless otherwise, even if there is a > small risk of a future code change not respecting the ordering > requirements. Yet such would be noticed pretty quickly, I suppose. I think it's clearer with the jumps. Thanks, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |