| From ebe119cd0929df4878f758ebf880cb435e4dcaaf Mon Sep 17 00:00:00 2001 |
| From: H. Peter Anvin <hpa@zytor.com> |
| Date: Mon, 20 Jul 2009 23:27:39 -0700 |
| Subject: x86: Fix movq immediate operand constraints in uaccess.h |
| |
| From: H. Peter Anvin <hpa@zytor.com> |
| |
| commit ebe119cd0929df4878f758ebf880cb435e4dcaaf upstream. |
| |
| The movq instruction, generated by __put_user_asm() when used for |
| 64-bit data, takes a sign-extended immediate ("e") not a zero-extended |
| immediate ("Z"). |
| |
| Signed-off-by: H. Peter Anvin <hpa@zytor.com> |
| Cc: Uros Bizjak <ubizjak@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/x86/include/asm/uaccess.h | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/x86/include/asm/uaccess.h |
| +++ b/arch/x86/include/asm/uaccess.h |
| @@ -212,9 +212,9 @@ extern int __get_user_bad(void); |
| : "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx") |
| #else |
| #define __put_user_asm_u64(x, ptr, retval, errret) \ |
| - __put_user_asm(x, ptr, retval, "q", "", "Zr", errret) |
| + __put_user_asm(x, ptr, retval, "q", "", "er", errret) |
| #define __put_user_asm_ex_u64(x, addr) \ |
| - __put_user_asm_ex(x, addr, "q", "", "Zr") |
| + __put_user_asm_ex(x, addr, "q", "", "er") |
| #define __put_user_x8(x, ptr, __ret_pu) __put_user_x(8, x, ptr, __ret_pu) |
| #endif |
| |