From b8bf456d13988fb38cfe248676327f44a2d2ed2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Wed, 23 Oct 2013 09:54:54 +0300 Subject: [PATCH] pax: x86_64: fix copy_user_generic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pax patch removed r10 from clobbers list as all assembly code was updated to not use it. However, in the error path the assembly code ends up calling copy_user_handle_tail() C-function that can clobber r10. This broke things for certain gcc optimizations (at least for gcc 4.8.x), as copy_user_generic() is inline function, and the inline assembly incorrectly guaranteed not to clobber r10. Add r10 back to clobbers list like vanilla kernel has it. It is needed always due to the possibly C-function call in error path. Signed-off-by: Timo Teräs Acked-by: Natanael Copa --- arch/x86/include/asm/uaccess_64.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h index 1dbe82f..9d398f4 100644 --- a/arch/x86/include/asm/uaccess_64.h +++ b/arch/x86/include/asm/uaccess_64.h @@ -44,7 +44,7 @@ copy_user_generic(void *to, const void *from, unsigned len) ASM_OUTPUT2("=a" (ret), "=D" (to), "=S" (from), "=d" (len)), "1" (to), "2" (from), "3" (len) - : "memory", "rcx", "r8", "r9", "r11"); + : "memory", "rcx", "r8", "r9", "r10", "r11"); return ret; } -- 1.8.4.1