On 6/20/2025 4:08 PM, Andrew Cooper wrote: >> But, the resulting code is wonky. It needs to do something more like this: >> >> if ((error_code & (X86_PF_WRITE | X86_PF_USER)) != X86_PF_USER) >> return false; >> >> if (error_code & X86_PF_INSTR)) >> return __emulate_vsyscall(regs, address); > > To do this, LASS needs a proper interlink against NX || SMEP. > > If neither NX nor SMEP are active, the CPU does not report X86_PF_INSTR, > meaning that fetches are reported as plain reads. > > This leads to some fun corner cases in SMAP and now LASS too for virt. Maybe I am missing something, but LASS works pre-paging so it wouldn't generate a PF, right? We have a new vsyscall emulation for #GP (patch 9) that wouldn't follow this path.