Re: [PATCHv6 07/16] x86/vsyscall: Reorganize the #PF emulation code

From: Kirill A. Shutemov
Date: Tue Jun 24 2025 - 07:37:48 EST


On Mon, Jun 23, 2025 at 08:32:53AM -0700, Dave Hansen wrote:
> On 6/23/25 05:41, Kirill A. Shutemov wrote:
> > So, IIUC, that's dependency of vsyscall PF on NX. Do we want to disable
> > vsyscall on boot if NX is not available?
>
> Well, vsyscall=none can break old userspace, so forcing it on old
> hardware doesn't seem like a great idea.
>
> But, either way, this doesn't really appear to be a LASS issue. This code:
>
> > if (!(error_code & X86_PF_INSTR)) {
> > /* Failed vsyscall read */
> > if (vsyscall_mode == EMULATE)
> > return false;
>
> Is really asking the question:
>
> Is this #PF from an instruction fetch in the vsyscall page?
>
> That _should_ be able to be done by comparing CR2 and regs->rip. In
> fact, that's done just below anyway:
>
> WARN_ON_ONCE(address != regs->ip);
>
> So I think we can fix this up with something like the attached patch
> which just drives the if() from regs->rip and make the warning NX-only.

Looks good to me.

Do you want me to include it into this patchset or will you apply it
separately?

--
Kiryl Shutsemau / Kirill A. Shutemov