mn10300/misalignment: Use SIGSEGV SEGV_MAPERR to report a failed user copy
authorEric W. Biederman <ebiederm@xmission.com>
Tue, 1 Aug 2017 10:02:38 +0000 (05:02 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Fri, 12 Jan 2018 20:23:36 +0000 (14:23 -0600)
Setting si_code to 0 is the same a setting si_code to SI_USER which is definitely
not correct.  With si_code set to SI_USER si_pid and si_uid will be copied to
userspace instead of si_addr.  Which is very wrong.

So fix this by using a sensible si_code (SEGV_MAPERR) for this failure.

Cc: stable@vger.kernel.org
Fixes: b920de1b77b7 ("mn10300: add the MN10300/AM33 architecture to the kernel")
Cc: David Howells <dhowells@redhat.com>
Cc: Masakazu Urade <urade.masakazu@jp.panasonic.com>
Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
arch/mn10300/mm/misalignment.c

index b39a388825ae33b2627913be7e2e72a2c581658b..8ace89617c1c91bc72572737424ca9a73e4e64be 100644 (file)
@@ -437,7 +437,7 @@ transfer_failed:
 
        info.si_signo   = SIGSEGV;
        info.si_errno   = 0;
-       info.si_code    = 0;
+       info.si_code    = SEGV_MAPERR;
        info.si_addr    = (void *) regs->pc;
        force_sig_info(SIGSEGV, &info, current);
        return;