Re: [PATCH v10 08/15] x86/vsyscall: Reorganize the page fault emulation code

From: David Laight

Date: Thu Oct 30 2025 - 17:37:04 EST


On Thu, 30 Oct 2025 12:28:52 -0700
Sohil Mehta <sohil.mehta@xxxxxxxxx> wrote:

> Thank you for taking a look at these patches.
>
> On 10/30/2025 9:58 AM, Andy Lutomirski wrote:
>
> > So I think all that's needed is to update "[PATCH v10 10/15] x86/vsyscall: Add vsyscall emulation for #GP" to check user_64bit_mode(regs) for the vsyscall case. (As submitted, unless I missed something while composing the patches in my head, it's only checking user_mode(regs), and I think it's worth the single extra line of code to make the result a tiny bit more robust.)
>
> I probably don't understand all the nuances here. But, the goal of the
> check seems to ensure a 32-bit process running on a 64-bit kernel
> doesn't ever go through this vsyscall emulation code, right?

Do remember that there is no such thing as a '32-bit process'.
Changing to/from 'long mode' isn't privileged.
OTOH in 32-bit mode you can't generate an address above 4G.
(But I've no idea if the high register bits get cleared before the register
is modified.)

David

>
> I guess a user_64bit_mode(regs) check wouldn't harm. I'll add it when
> the vsyscall series is posted.
>
>
>
>
>