From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_DNS_FOR_FROM,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from integral2.. (unknown [114.10.7.234]) by gnuweeb.org (Postfix) with ESMTPSA id 138147E2D7; Thu, 10 Mar 2022 01:53:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1646877232; bh=k4b/gnTPXj7jVItm9sqkob63bVPtxz95JpsUqhVzIvw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KJ9w89Xw36tW+P7fsFcWottfGTayDR72m4AEw+oygIZnUbrHJXoITtxAgjU5tkW4E Uh5aqucDJd74GzwLm/RZ2vJLjiWHqIwkotxVdSr8iSnefl96NsEeXNy8ioWSfK9TPT CcZf25Unrb8Ma4+ovJaFJ1yK8qg52lUt1WyNAOutCYgtrckvc80t9vYqE+K+eZiJiM Cdb5PsDDnAXhXvVHDestgGZjGqyQwlh/3cwqHI5ODq8DrPn/QTt9RWEpT45WYzN2Va 6YlGszkZWVHxI31eN0lKD9fQolTt56irJGg2A/RzjvChgHP5mQ/Gh/Q2dXeviID6dT ZIo8h0n/ZEWnA== From: Ammar Faizi To: Borislav Petkov , Thomas Gleixner Cc: Ammar Faizi , Alviro Iskandar Setiawan , Alviro Iskandar Setiawan , Dave Hansen , Greg Kroah-Hartman , "H. Peter Anvin" , Ingo Molnar , Tony Luck , Yazen Ghannam , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, gwml@vger.gnuweeb.org, x86@kernel.org, David Laight , Jiri Hladky Subject: [PATCH v5 1/2] x86/delay: Fix the wrong asm constraint in `delay_loop()` Date: Thu, 10 Mar 2022 08:53:05 +0700 Message-Id: <20220310015306.445359-2-ammarfaizi2@gnuweeb.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220310015306.445359-1-ammarfaizi2@gnuweeb.org> References: <20220310015306.445359-1-ammarfaizi2@gnuweeb.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: The asm constraint does not reflect that the asm statement can modify the value of @loops. But the asm statement in delay_loop() does modify the @loops. Specifiying the wrong constraint may lead to undefined behavior, it may clobber random stuff (e.g. local variable, important temporary value in regs, etc.). Fix this by changing the constraint from "a" (as an input) to "+a" (as an input and output). Cc: David Laight Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Jiri Hladky Cc: stable@vger.kernel.org # v2.6.27+ Fixes: e01b70ef3eb ("x86: fix bug in arch/i386/lib/delay.c file, delay_loop function") Signed-off-by: Ammar Faizi --- 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