> 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. ~Andrew