[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200610001310.GA20597@ranerica-svr.sc.intel.com>
Date: Tue, 9 Jun 2020 17:13:10 -0700
From: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com>
To: Brendan Shanks <bshanks@...eweavers.com>
Cc: linux-kernel@...r.kernel.org, tglx@...utronix.de, mingo@...hat.com,
bp@...en8.de, hpa@...or.com, x86@...nel.org, ebiederm@...ssion.com,
andi@...much.email, Babu.Moger@....com
Subject: Re: [PATCH v4] x86/umip: Add emulation/spoofing for SLDT and STR
instructions
On Tue, Jun 09, 2020 at 10:54:23AM -0700, Brendan Shanks wrote:
> Add emulation/spoofing of SLDT and STR for both 32- and 64-bit
> processes.
>
> Wine users have found a small number of Windows apps using SLDT that
> were crashing when run on UMIP-enabled systems.
>
> Reported-by: Andreas Rammhold <andi@...much.email>
> Originally-by: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com>
> Signed-off-by: Brendan Shanks <bshanks@...eweavers.com>
> ---
>
> v4: Use braces for every clause of the conditional. I tried a switch(),
> but it takes more lines and looks more cluttered (especially with the
> #ifdef).
> Also replace out-of-date comment at top of file.
>
> arch/x86/kernel/umip.c | 38 ++++++++++++++++++++++++++------------
> 1 file changed, 26 insertions(+), 12 deletions(-)
>
> diff --git a/arch/x86/kernel/umip.c b/arch/x86/kernel/umip.c
> index 8d5cbe1bbb3b..62f4f0afb979 100644
> --- a/arch/x86/kernel/umip.c
> +++ b/arch/x86/kernel/umip.c
> @@ -45,11 +45,12 @@
> * value that, lies close to the top of the kernel memory. The limit for the GDT
> * and the IDT are set to zero.
> *
> - * Given that SLDT and STR are not commonly used in programs that run on WineHQ
> - * or DOSEMU2, they are not emulated.
> - *
> * The instruction smsw is emulated to return the value that the register CR0
> * has at boot time as set in the head_32.
> + * sldt and str are emulated to return the values that the kernel programmatically
> + * assigns:
> + * - sldt returns (GDT_ENTRY_LDT * 8) if an LDT has been set, 0 if not.
> + * - str returns (GDT_ENTRY_TSS * 8).
Probably for consistency with the rest of the document the instruction
names should be capitalized (I know that smsw was not capitalized before
:/). Maybe maintainers can fix this when applying?
Other than that, FWIW:
Reviewed-by: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com>
Tested-by: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com>
Powered by blists - more mailing lists