| From 8c1609dde53e97da64e1b451d45bb30bd8d4607d Mon Sep 17 00:00:00 2001 |
| From: Joerg Roedel <jroedel@suse.de> |
| Date: Tue, 4 Apr 2017 18:15:01 +0200 |
| Subject: [PATCH] x86/signals: Fix lower/upper bound reporting in compat |
| siginfo |
| |
| commit cfac6dfa42bddfa9711b20d486e521d1a41ab09f upstream. |
| |
| Put the right values from the original siginfo into the |
| userspace compat-siginfo. |
| |
| This fixes the 32-bit MPX "tabletest" testcase on 64-bit kernels. |
| |
| Signed-off-by: Joerg Roedel <jroedel@suse.de> |
| Acked-by: Dave Hansen <dave.hansen@linux.intel.com> |
| Cc: <stable@vger.kernel.org> # v4.8+ |
| Cc: Andy Lutomirski <luto@kernel.org> |
| Cc: Borislav Petkov <bp@alien8.de> |
| Cc: Borislav Petkov <bp@suse.de> |
| Cc: Brian Gerst <brgerst@gmail.com> |
| Cc: Denys Vlasenko <dvlasenk@redhat.com> |
| Cc: Dmitry Safonov <0x7f454c46@gmail.com> |
| Cc: H. Peter Anvin <hpa@zytor.com> |
| Cc: Josh Poimboeuf <jpoimboe@redhat.com> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Fixes: a4455082dc6f0 ('x86/signals: Add missing signal_compat code for x86 features') |
| Link: http://lkml.kernel.org/r/1491322501-5054-1-git-send-email-joro@8bytes.org |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/x86/kernel/signal_compat.c b/arch/x86/kernel/signal_compat.c |
| index b44564bf86a8..0471763eefdd 100644 |
| --- a/arch/x86/kernel/signal_compat.c |
| +++ b/arch/x86/kernel/signal_compat.c |
| @@ -132,8 +132,8 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) |
| |
| if (from->si_signo == SIGSEGV) { |
| if (from->si_code == SEGV_BNDERR) { |
| - compat_uptr_t lower = (unsigned long)&to->si_lower; |
| - compat_uptr_t upper = (unsigned long)&to->si_upper; |
| + compat_uptr_t lower = (unsigned long)from->si_lower; |
| + compat_uptr_t upper = (unsigned long)from->si_upper; |
| put_user_ex(lower, &to->si_lower); |
| put_user_ex(upper, &to->si_upper); |
| } |
| -- |
| 2.12.0 |
| |