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: <20201123142746.GC15044@zn.tnic>
Date:   Mon, 23 Nov 2020 15:27:46 +0100
From:   Borislav Petkov <bp@...en8.de>
To:     Gabriele Paoloni <gabriele.paoloni@...el.com>
Cc:     tony.luck@...el.com, tglx@...utronix.de, mingo@...hat.com,
        x86@...nel.org, hpa@...or.com, linux-edac@...r.kernel.org,
        linux-kernel@...r.kernel.org, linux-safety@...ts.elisa.tech
Subject: Re: [PATCH 2/4] x86/mce: move the mce_panic() call and kill_it
 assignments at the right places

On Wed, Nov 18, 2020 at 03:15:50PM +0000, Gabriele Paoloni wrote:
> Right now for local MCEs we panic(),if needed, right after lmce is
> set. For global MCEs mce_reign() takes care of calling mce_panic().
> Hence this patch:
> - improves readibility by moving the conditional evaluation of
> tolerant up to when kill_it is set first
> - moves the mce_panic() call up into the statement where mce_end()
> fails

Pls avoid using "this patch does this and that" in the commit message
but say directly what it does:

- Improve readability ...

- Move mce_panic()...

and so on.

> Signed-off-by: Gabriele Paoloni <gabriele.paoloni@...el.com>
> Reviewed-by: Tony Luck <tony.luck@...el.com>
> ---
>  arch/x86/kernel/cpu/mce/core.c | 21 +++++++++------------
>  1 file changed, 9 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
> index b990892c6766..e025ff04438f 100644
> --- a/arch/x86/kernel/cpu/mce/core.c
> +++ b/arch/x86/kernel/cpu/mce/core.c
> @@ -1350,8 +1350,7 @@ noinstr void do_machine_check(struct pt_regs *regs)
>  	 * severity is MCE_AR_SEVERITY we have other options.
>  	 */
>  	if (!(m.mcgstatus & MCG_STATUS_RIPV))
> -		kill_it = 1;
> -
> +		kill_it = (cfg->tolerant == 3) ? 0 : 1;

So you just set kill_it using cfg->tolerant...

>  	/*
>  	 * Check if this MCE is signaled to only this logical processor,
>  	 * on Intel, Zhaoxin only.
> @@ -1384,8 +1383,15 @@ noinstr void do_machine_check(struct pt_regs *regs)
>  	 * When there's any problem use only local no_way_out state.
>  	 */
>  	if (!lmce) {
> -		if (mce_end(order) < 0)
> +		if (mce_end(order) < 0) {
>  			no_way_out = no_way_out ? no_way_out : worst >= MCE_PANIC_SEVERITY;
> +			/*
> +			 * mce_reign() has probably failed hence evaluate if we need
> +			 * to panic
> +			 */
> +			if (no_way_out && mca_cfg.tolerant < 3)

... but here you're testing cfg->tolerant again.

why not

			if (no_way_out && kill_it)

?

Thx.

-- 
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