Skip to contentSkip to conversation

Patch "s390/uaccess: get_user() should zero on failure (again)" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Apr 10, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

s390/uaccess: get_user() should zero on failure (again)

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
s390-uaccess-get_user-should-zero-on-failure-again.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From d09c5373e8e4eaaa09233552cbf75dc4c4f21203 Mon Sep 17 00:00:00 2001

From: Heiko Carstens <[email protected]>
Date: Mon, 27 Mar 2017 09:48:04 +0200
Subject: s390/uaccess: get_user() should zero on failure (again)

From: Heiko Carstens <[email protected]>

commit d09c5373e8e4eaaa09233552cbf75dc4c4f21203 upstream.

Commit fd2d2b191fe7 ("s390: get_user() should zero on failure") intended to fix s390's get_user() implementation which did not zero the target operand if the read from user space faulted. Unfortunately the patch has no effect: the corresponding inline assembly specifies that the operand is only written to ("=") and the previous value is discarded.

Therefore the compiler is free to and actually does omit the zero initialization.

To fix this simply change the contraint modifier to "+", so the compiler cannot omit the initialization anymore.

Fixes c9ca78415ac1 ("s390/uaccess: provide inline variants of get_user/put_user")
Fixes fd2d2b191fe7 ("s390: get_user() should zero on failure")
Cc Al Viro <[email protected]>
---
 arch/s390/include/asm/uaccess.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/s390/include/asm/uaccess.h +1 -1
@@ -150,7 +150,7 @@ unsigned long __must_check __copy_to_use
 		"	jg	2b\n"				\
 		".popsection\n"					\
 		EX_TABLE(0b,3b) EX_TABLE(1b,3b)			\
-		: "=d" (__rc), "=Q" (*(to))			\
+		: "=d" (__rc), "+Q" (*(to))			\
 		: "d" (size), "Q" (*(from)),			\
 		  "d" (__reg0), "K" (-EFAULT)			\
 		: "cc");					\

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/s390-uaccess-get_user-should-zero-on-failure-again.patch queue-4.4/s390-decompressor-fix-initrd-corruption-caused-by-bss-clear.patch