[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87a5wvrgj5.ffs@tglx>
Date: Mon, 19 Jun 2023 10:40:46 +0200
From: Thomas Gleixner <tglx@...utronix.de>
To: Nikolay Borisov <nik.borisov@...e.com>, x86@...nel.org
Cc: linux-kernel@...r.kernel.org, mhocko@...e.com, jslaby@...e.cz
Subject: Re: [PATCH v3 5/5] x86/entry: Make IA32 syscalls' availability
depend on ia32_enabled()
On Mon, Jun 19 2023 at 09:28, Nikolay Borisov wrote:
> On 19.06.23 г. 0:17 ч., Thomas Gleixner wrote:
>> On Fri, Jun 16 2023 at 15:57, Nikolay Borisov wrote:
>>> Another major aspect of supporting running of 32bit processes is the
>>> ability to access 32bit syscalls. Such syscalls are invoked either by
>>> using the legacy int 0x80 call gate interface or via the newer sysenter
>>> instruction.
>>>
>>> Ensure that if ia32 emulation is disabled (either at compile time or
>>> runtime) then those 2 syscall mechanisms are also disabled.
>>
>> AFAICT there are _three_ mechanisms for 32bit syscalls, no?
>
> int 0x80 and sysenter make it 2? Which one is the 3rd one - the "native
> 64bit syscall" used in for X32 ABI ? This patch specifically deals with
> the first 2?
int 80, sysenter, syscall = 3
They obviously depend on the vendor preference when the CPU has enabled
long mode:
AMD Intel
compat_int 80 y y
compat_sysenter #UD y
compat_syscall y #UD
On Intel SYSENTER is trivial to disable by setting MSR_IA32_SYSENTER_CS
to 0 which makes sysenter raise #GP.
The nasty one is SYSCALL on AMD. If MSR_EFER.SCE=1 then MSR_CSTAR must
contain a valid kernel text address because otherwise compat SYSCALL
faults with CPL0 and user GSBASE. That's the whole reason for the stub
function which just sets EAX to -ENOSYS and returns via SYSRET.
And your patch deals with all _three_:
compat=ON compat=OFF
compat_int 80: Set system interrupt gate ---
compat_sysenter: Set up SYSENTER MSRs for Invalidate SYSENTER
entry_SYSENTER_compat() MSRs
compat_syscall: Set MSR_CSTAR to Set MSR_CSTAR to
entry_SYSCALL_compat() stub function
(AMD only) (AMD only)
No?
Changelogs have to be precise. Otherwise they are useless and in the
worst case actively misleading.
Thanks,
tglx
Powered by blists - more mailing lists