Michal Koutný 7e310c
From: Heiko Carstens <hca@linux.ibm.com>
Michal Koutný 7e310c
Date: Thu, 23 Mar 2023 13:09:16 +0100
Michal Koutný 7e310c
Subject: s390/uaccess: add missing earlyclobber annotations to __clear_user()
Michal Koutný 7e310c
Git-commit: 89aba4c26fae4e459f755a18912845c348ee48f3
Michal Koutný 7e310c
Patch-mainline: v6.3-rc5
Michal Koutný 7e310c
References: bsc#1209858
Michal Koutný 7e310c
Michal Koutný 7e310c
Add missing earlyclobber annotation to size, to, and tmp2 operands of the
Michal Koutný 7e310c
__clear_user() inline assembly since they are modified or written to before
Michal Koutný 7e310c
the last usage of all input operands. This can lead to incorrect register
Michal Koutný 7e310c
allocation for the inline assembly.
Michal Koutný 7e310c
Michal Koutný 7e310c
Fixes: 6c2a9e6df604 ("[S390] Use alternative user-copy operations for new hardware.")
Michal Koutný 7e310c
Reported-by: Mark Rutland <mark.rutland@arm.com>
Michal Koutný 7e310c
Link: https://lore.kernel.org/all/20230321122514.1743889-3-mark.rutland@arm.com/
Michal Koutný 7e310c
Cc: stable@vger.kernel.org
Michal Koutný 7e310c
Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Michal Koutný 7e310c
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Michal Koutný 7e310c
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Michal Koutný 7e310c
Acked-by: Michal Koutný <mkoutny@suse.com>
Michal Koutný 7e310c
---
Michal Koutný 7e310c
 arch/s390/lib/uaccess.c | 2 +-
Michal Koutný 7e310c
 1 file changed, 1 insertion(+), 1 deletion(-)
Michal Koutný 7e310c
Michal Koutný 7e310c
diff --git a/arch/s390/lib/uaccess.c b/arch/s390/lib/uaccess.c
Michal Koutný 7e310c
index 720036fb1924..d44214072779 100644
Michal Koutný 7e310c
--- a/arch/s390/lib/uaccess.c
Michal Koutný 7e310c
+++ b/arch/s390/lib/uaccess.c
Michal Koutný 7e310c
@@ -349,7 +349,7 @@ static inline unsigned long clear_user_m
Michal Koutný 7e310c
 		"4: slgr  %0,%0\n"
Michal Koutný 7e310c
 		"5:\n"
Michal Koutný 7e310c
 		EX_TABLE(0b,2b) EX_TABLE(6b,2b) EX_TABLE(3b,5b) EX_TABLE(7b,5b)
Michal Koutný 7e310c
-		: "+a" (size), "+a" (to), "+a" (tmp1), "=a" (tmp2)
Michal Koutný 7e310c
+		: "+&a" (size), "+&a" (to), "+a" (tmp1), "=&a" (tmp2)
Michal Koutný 7e310c
 		: "a" (empty_zero_page), [spec] "d" (spec.val)
Michal Koutný 7e310c
 		: "cc", "memory", "0");
Michal Koutný 7e310c
 	return size;
Michal Koutný 7e310c