All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ammar Faizi <ammarfaizi2@gnuweeb.org>
To: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Tony Luck <tony.luck@intel.com>,
	linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org,
	gwml@vger.gnuweeb.org, x86@kernel.org, stable@vger.kernel.org,
	Alviro Iskandar Setiawan <alviro.iskandar@gnuweeb.org>,
	Jiri Hladky <hladky.jiri@googlemail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ammar Faizi <ammarfaizi2@gnuweeb.org>
Subject: [PATCH v4 1/2] x86/delay: Fix the wrong asm constraint in `delay_loop()`
Date: Tue,  1 Mar 2022 16:46:07 +0700	[thread overview]
Message-ID: <20220301094608.118879-2-ammarfaizi2@gnuweeb.org> (raw)
In-Reply-To: <20220301094608.118879-1-ammarfaizi2@gnuweeb.org>

From: Ammar Faizi <ammarfaizi2@gnuweeb.org>

The asm constraint does not reflect that the asm statement can modify
the value of @loops. But the asm statement in delay_loop() does change
the @loops.

If by any chance the compiler inlines this function, it may clobber
random stuff (e.g. local variable, important temporary value in reg,
etc.).

Fortunately, delay_loop() is only called indirectly (so it can't
inline), and then the register it clobbers is %rax (which is by the
nature of the calling convention, it's a caller saved register), so it
didn't yield any bug.

^ That shouldn't be an excuse for using the wrong constraint anyway.

This changes "a" (as an input) to "+a" (as an input and output).

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Jiri Hladky <hladky.jiri@googlemail.com>
Fixes: e01b70ef3eb3 ("x86: fix bug in arch/i386/lib/delay.c file, delay_loop function")
Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
---

Fortunately, the constraint violation that's fixed by patch 1 doesn't
yield any bug due to the nature of System V ABI. Should we backport
this?

 arch/x86/lib/delay.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/lib/delay.c b/arch/x86/lib/delay.c
index 65d15df6212d..0e65d00e2339 100644
--- a/arch/x86/lib/delay.c
+++ b/arch/x86/lib/delay.c
@@ -54,8 +54,8 @@ static void delay_loop(u64 __loops)
 		"	jnz 2b		\n"
 		"3:	dec %0		\n"
 
-		: /* we don't need output */
-		:"a" (loops)
+		: "+a" (loops)
+		:
 	);
 }
 
-- 
2.32.0


  reply	other threads:[~2022-03-01  9:46 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-01  9:46 [PATCH v4 0/2] Two x86 fixes Ammar Faizi
2022-03-01  9:46 ` Ammar Faizi [this message]
2022-03-01  9:54   ` [PATCH v4 1/2] x86/delay: Fix the wrong asm constraint in `delay_loop()` David Laight
2022-03-03  0:14     ` Ammar Faizi
2022-03-01 11:33   ` Alviro Iskandar Setiawan
2022-03-03  0:06     ` Ammar Faizi
2022-03-03  0:35     ` David Laight
2022-03-01  9:46 ` [PATCH v4 2/2] x86/mce/amd: Fix memory leak when `threshold_create_bank()` fails Ammar Faizi
2022-03-02 17:26   ` Yazen Ghannam
2022-03-02 23:20     ` Ammar Faizi
2022-03-02 23:27       ` Ammar Faizi
2022-03-03  1:58         ` Alviro Iskandar Setiawan
2022-03-03  2:07           ` Ammar Faizi
2022-03-03  2:32             ` Ammar Faizi
2022-03-03  2:51               ` Alviro Iskandar Setiawan
2022-03-07  0:27               ` Ammar Faizi
2022-03-09 20:55                 ` Yazen Ghannam
2022-03-10  1:56                   ` Ammar Faizi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220301094608.118879-2-ammarfaizi2@gnuweeb.org \
    --to=ammarfaizi2@gnuweeb.org \
    --cc=alviro.iskandar@gnuweeb.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gwml@vger.gnuweeb.org \
    --cc=hladky.jiri@googlemail.com \
    --cc=hpa@zytor.com \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.