On 26/10/16 10:40, Andrew Cooper wrote: > On 26/10/16 09:57, Jan Beulich wrote: >>>>> On 25.10.16 at 20:10, <andrew.coop...@citrix.com> wrote: >>> @@ -2994,8 +2978,8 @@ x86_emulate( >>> break; >>> >>> case 0x8e: /* mov r/m,Sreg */ >>> - seg = decode_segment(modrm_reg); >>> - generate_exception_if(seg == decode_segment_failed, EXC_UD, -1); >>> + seg = modrm_reg & 7; /* REX.R is ignored. */ >>> + generate_exception_if(!is_x86_user_segment(seg), EXC_UD, -1); >>> generate_exception_if(seg == x86_seg_cs, EXC_UD, -1); >> Can I talk you into folding these two generate_exception_if()s, as >> they logically belong together? > Ok. > >>> @@ -5438,6 +5422,17 @@ x86_emulate( >>> #undef override_seg >>> #undef ea >>> >>> +static void __init __maybe_unused build_assertions(void) >>> +{ >>> + /* Check the values against SReg3 encoding in opcode/ModRM bytes. */ >>> + BUILD_BUG_ON(x86_seg_es != 0); >>> + BUILD_BUG_ON(x86_seg_cs != 1); >>> + BUILD_BUG_ON(x86_seg_ss != 2); >>> + BUILD_BUG_ON(x86_seg_ds != 3); >>> + BUILD_BUG_ON(x86_seg_fs != 4); >>> + BUILD_BUG_ON(x86_seg_gs != 5); >>> +} >> So using an inline function in the header did not work out? > No - that would involve making BUILD_BUG_ON() available to x86_emulate.h > > In this position, it does also affect the test harness build, as it is > outside an #ifdef __XEN__ block. > >> In any event, >> Reviewed-by: Jan Beulich <jbeul...@suse.com> > Thanks
Wei: Turns out that I typo'd the subject, and I meant "for 4.8" here, as this is a bugfix in the emulator. Please can I get a view towards a release ack? ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel