Re: [PATCHv6 07/16] x86/vsyscall: Reorganize the #PF emulation code
From: H. Peter Anvin
Date: Fri Jun 20 2025 - 23:37:22 EST
On June 20, 2025 4:21:38 PM PDT, Dave Hansen <dave.hansen@xxxxxxxxx> wrote:
>On 6/20/25 16:08, 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.
>Interesting point.
>
>I think the easiest way to do this is just make a cpuid_deps[] entry for
>LASS and NX. If there's a CPU where LASS is available but where NX isn't
>available, we have much bigger problems on our hands.
Indeed. There is exactly zero reason to support this case.