Re: [PATCH 5/6] x86/alternative: Relocate all insn-relative fields

2024-04-23 Thread Jan Beulich
On 23.04.2024 16:59, Jan Beulich wrote: > On 22.04.2024 20:14, Andrew Cooper wrote: >> --- a/xen/arch/x86/alternative.c >> +++ b/xen/arch/x86/alternative.c >> @@ -244,10 +244,31 @@ static void init_or_livepatch >> _apply_alternatives(struct alt_instr *start, >> >> memcpy(buf, repl,

Re: [PATCH 5/6] x86/alternative: Relocate all insn-relative fields

2024-04-23 Thread Jan Beulich
On 22.04.2024 20:14, Andrew Cooper wrote: > --- a/xen/arch/x86/alternative.c > +++ b/xen/arch/x86/alternative.c > @@ -244,10 +244,31 @@ static void init_or_livepatch > _apply_alternatives(struct alt_instr *start, > > memcpy(buf, repl, a->repl_len); > > +/* Walk buf[] and

[PATCH 5/6] x86/alternative: Relocate all insn-relative fields

2024-04-22 Thread Andrew Cooper
Right now, relocation of displacements is restricted to finding 0xe8/e9 as the first byte of the replacement, but this is overly restrictive. Use x86_decode_lite() to find and adjust all insn-relative fields. As with disp8's not leaving the replacemnet block, some disp32's don't either. e.g. the