lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <760ea801-8394-4e0c-9ec3-23e36e436551@www.fastmail.com>
Date:   Fri, 14 Jan 2022 15:48:31 -0800
From:   "Andy Lutomirski" <luto@...nel.org>
To:     "Borislav Petkov" <bp@...en8.de>,
        "Peter Zijlstra (Intel)" <peterz@...radead.org>
Cc:     "Sean Christopherson" <seanjc@...gle.com>,
        "kernel test robot" <oliver.sang@...el.com>,
        "Josh Poimboeuf" <jpoimboe@...hat.com>,
        "Linux Kernel Mailing List" <linux-kernel@...r.kernel.org>,
        "the arch/x86 maintainers" <x86@...nel.org>, lkp@...ts.01.org,
        lkp@...el.com
Subject: Re: [PATCH] x86/entry_32: Fix segment exceptions



On Fri, Jan 14, 2022, at 3:24 AM, Borislav Petkov wrote:
> On Thu, Jan 13, 2022 at 08:55:37PM +0100, Peter Zijlstra wrote:
>> On IRC Andrew also noted that these EX_REG_* things should be __i386__
>> only. Previosly when they lived as open-coded EX_DATA_REG() usage in
>> entry_32.S that was implied, but now ...
>
> I guess that then below.
>
> amluto, I'd love it if we (and by that I mean you :-)) could document
> the rules for GS on 32-bit so that it is clear what's going on there...
>
> entry_32.S is only hinting at what's going on, we have comments here and
> there but not all concentrated into a single location.

Acked-by: Andy Lutomirski <luto@...nel.org>

>
> Thx.
>
> ---
> From: Borislav Petkov <bp@...e.de>
> Date: Fri, 14 Jan 2022 12:15:21 +0100
> Subject: [PATCH] x86/entry_32: Remove GS from the pt_regs offsets and fixup
>  regs
>
> GS is special on 32-bit and segment exceptions fixup through it won't
> work. Leave breadcrumbs for others not to walk into the same nasty.
>
> Fixes: 9cdbeec40968 ("x86/entry_32: Fix segment exceptions")
> Signed-off-by: Borislav Petkov <bp@...e.de>
> ---
>  arch/x86/include/asm/extable_fixup_types.h | 5 +++--
>  arch/x86/lib/insn-eval.c                   | 5 ++++-
>  2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/include/asm/extable_fixup_types.h 
> b/arch/x86/include/asm/extable_fixup_types.h
> index 503622627400..0aa5f4d3234f 100644
> --- a/arch/x86/include/asm/extable_fixup_types.h
> +++ b/arch/x86/include/asm/extable_fixup_types.h
> @@ -20,11 +20,12 @@
>  #define EX_DATA_FLAG(flag)		((flag) << EX_DATA_FLAG_SHIFT)
>  #define EX_DATA_IMM(imm)		((imm) << EX_DATA_IMM_SHIFT)
> 
> -/* segment regs */
> +#ifdef CONFIG_X86_32
> +/* segment regs, valid only for 32-bit code, see pt_regoff */
>  #define EX_REG_DS			EX_DATA_REG(8)
>  #define EX_REG_ES			EX_DATA_REG(9)
>  #define EX_REG_FS			EX_DATA_REG(10)
> -#define EX_REG_GS			EX_DATA_REG(11)
> +#endif
> 
>  /* flags */
>  #define EX_FLAG_CLEAR_AX		EX_DATA_FLAG(1)
> diff --git a/arch/x86/lib/insn-eval.c b/arch/x86/lib/insn-eval.c
> index b781d324211b..34001eee7482 100644
> --- a/arch/x86/lib/insn-eval.c
> +++ b/arch/x86/lib/insn-eval.c
> @@ -432,7 +432,10 @@ static const int pt_regoff[] = {
>  	offsetof(struct pt_regs, ds),
>  	offsetof(struct pt_regs, es),
>  	offsetof(struct pt_regs, fs),
> -	offsetof(struct pt_regs, gs),
> +	/*
> +	 * Can't use that one - it is special - see entry_32.S
> +	 * offsetof(struct pt_regs, gs),
> +	 */
>  #endif
>  };
> 
> -- 
> 2.29.2
>
>
> -- 
> Regards/Gruss,
>     Boris.
>
> https://people.kernel.org/tglx/notes-about-netiquette

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ