From: ldv@altlinux•org (Dmitry V. Levin)
To: linux-arm-kernel@lists•infradead.org
Subject: sparc/ppc/arm compat siginfo ABI regressions: sending SIGFPE via kill() returns wrong values in si_pid and si_uid
Date: Thu, 12 Apr 2018 20:35:58 +0300 [thread overview]
Message-ID: <20180412173558.GB31781@altlinux.org> (raw)
In-Reply-To: <CA+55aFxdg2bYHtbKXb4mT5UuP2GH_qjkc=WeZY-RYHWZFQ2Gng@mail.gmail.com>
On Thu, Apr 12, 2018 at 09:50:26AM -0700, Linus Torvalds wrote:
> Does this attached patch perhaps fix the ARM case?
>
> It just uses FPE_FLTUNK as the default si_code for SIGFPE, which seems
> sane enough. And then gets rid of FPE_FIXME, which should resolve the
> nasty case.
>
> Hmm? Entirely untested, and I didn't really look at the test-case in
> question since I can't really run it anyway.
>
> Well, I could run it all on x86-64, but it doesn't have that FPE_FIXME
> case at all.
>
> Linus
> arch/arm/include/uapi/asm/siginfo.h | 7 -------
> arch/arm/vfp/vfpmodule.c | 4 ++--
> 2 files changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/include/uapi/asm/siginfo.h b/arch/arm/include/uapi/asm/siginfo.h
> index d0513880be21..d87beeedb4c4 100644
> --- a/arch/arm/include/uapi/asm/siginfo.h
> +++ b/arch/arm/include/uapi/asm/siginfo.h
> @@ -3,11 +3,4 @@
>
> #include <asm-generic/siginfo.h>
>
> -/*
> - * SIGFPE si_codes
> - */
> -#ifdef __KERNEL__
> -#define FPE_FIXME 0 /* Broken dup of SI_USER */
> -#endif /* __KERNEL__ */
> -
> #endif
Looks like the whole file should go away.
> diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
> index 4c375e11ae95..012c6e690303 100644
> --- a/arch/arm/vfp/vfpmodule.c
> +++ b/arch/arm/vfp/vfpmodule.c
> @@ -251,13 +251,13 @@ static void vfp_panic(char *reason, u32 inst)
> */
> static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_regs *regs)
> {
> - int si_code = 0;
> + int si_code = FPE_FLTUNK;
Note that this change would affect the following code
at the end of vfp_raise_exceptions:
if (si_code)
vfp_raise_sigfpe(si_code, regs);
> pr_debug("VFP: raising exceptions %08x\n", exceptions);
>
> if (exceptions == VFP_EXCEPTION_ERROR) {
> vfp_panic("unhandled bounce", inst);
> - vfp_raise_sigfpe(FPE_FIXME, regs);
> + vfp_raise_sigfpe(si_code, regs);
> return;
> }
>
To be on the safe side, I'd just change it this way:
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 4c375e1..66a73ba 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -257,7 +257,7 @@ static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_
if (exceptions == VFP_EXCEPTION_ERROR) {
vfp_panic("unhandled bounce", inst);
- vfp_raise_sigfpe(FPE_FIXME, regs);
+ vfp_raise_sigfpe(FPE_FLTUNK, regs);
return;
}
--
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180412/8a5a5062/attachment.sig>
prev parent reply other threads:[~2018-04-12 17:35 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20180409152253.GD10489@altlinux.org>
2018-04-12 1:34 ` sparc/ppc/arm compat siginfo ABI regressions: sending SIGFPE via kill() returns wrong values in si_pid and si_uid Dmitry V. Levin
2018-04-12 1:45 ` Linus Torvalds
2018-04-12 9:58 ` Russell King - ARM Linux
2018-04-12 11:03 ` Dmitry V. Levin
2018-04-12 12:19 ` Russell King - ARM Linux
2018-04-12 12:49 ` Dmitry V. Levin
2018-04-12 13:14 ` Russell King - ARM Linux
2018-04-12 16:50 ` Linus Torvalds
2018-04-12 17:20 ` Russell King - ARM Linux
2018-04-12 17:22 ` Linus Torvalds
2018-04-13 9:42 ` Russell King - ARM Linux
2018-04-13 16:33 ` Linus Torvalds
2018-04-13 17:08 ` Dave Martin
2018-04-13 17:54 ` Russell King - ARM Linux
2018-04-13 18:23 ` Linus Torvalds
2018-04-13 18:45 ` Dave Martin
2018-04-13 19:53 ` Linus Torvalds
2018-04-15 13:12 ` Russell King - ARM Linux
2018-04-15 15:22 ` Eric W. Biederman
2018-04-15 15:56 ` [RFC PATCH 0/3] Dealing with the aliases of SI_USER Eric W. Biederman
2018-04-15 15:57 ` [RFC PATCH 1/3] signal: Ensure every siginfo we send has all bits initialized Eric W. Biederman
2018-04-17 13:23 ` Dave Martin
2018-04-17 19:37 ` Eric W. Biederman
2018-04-18 12:47 ` Dave Martin
2018-04-18 14:22 ` Eric W. Biederman
2018-04-19 8:26 ` Dave Martin
2018-04-15 15:58 ` [RFC PATCH 2/3] signal: Reduce copy_siginfo_to_user to just copy_to_user Eric W. Biederman
2018-04-15 15:59 ` [RFC PATCH 3/3] signal: Stop special casing TRAP_FIXME and FPE_FIXME in siginfo_layout Eric W. Biederman
2018-04-15 18:16 ` [RFC PATCH 0/3] Dealing with the aliases of SI_USER Linus Torvalds
2018-04-16 2:03 ` Eric W. Biederman
2018-04-18 17:58 ` Eric W. Biederman
2018-04-19 9:28 ` Dave Martin
2018-04-19 14:40 ` Eric W. Biederman
2018-04-13 18:35 ` sparc/ppc/arm compat siginfo ABI regressions: sending SIGFPE via kill() returns wrong values in si_pid and si_uid Dave Martin
2018-04-13 18:50 ` Russell King - ARM Linux
2018-04-13 18:56 ` Dave Martin
2018-04-12 17:35 ` Dmitry V. Levin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180412173558.GB31781@altlinux.org \
--to=ldv@altlinux$(echo .)org \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox