Patch "signal/metag: Document a conflict with SI_USER with SIGFPE" has been added to the 4.15-stable tree
This is a note to let you know that I've just added the patch titled
signal/metag: Document a conflict with SI_USER with SIGFPE
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Apr 9 10:16:32 CEST 2018
From: "Eric W. Biederman" <[email protected]>
Date: Tue, 1 Aug 2017 10:37:40 -0500
Subject: signal/metag: Document a conflict with SI_USER with SIGFPE
From: "Eric W. Biederman" <[email protected]>
[ Upstream commit b80328be53c215346b153769267b38f531d89b4f ]
Setting si_code to 0 results in a userspace seeing an si_code of 0. This is the same si_code as SI_USER. Posix and common sense requires that SI_USER not be a signal specific si_code. As such this use of 0 for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a value of __SI_KILL and now sees a value of SIL_KILL with the result hat uid and pid fields are copied and which might copying the si_addr field by accident but certainly not by design. Making this a very flakey implementation.
Utilizing FPE_FIXME siginfo_layout will now return SIL_FAULT and the appropriate fields will reliably be copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: James Hogan <[email protected]>
Cc: [email protected]
Ref: ac919f0883e5 ("metag: Traps")
--- arch/metag/include/uapi/asm/siginfo.h | 7 +++++++ arch/metag/kernel/traps.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-)
arch/metag/include/uapi/asm/siginfo.h +7 -0
@@ -6,4 +6,11 @@#include <asm-generic/siginfo.h> +/* +* SIGFPE si_codes +*/ +#ifdef __KERNEL__ +#define FPE_FIXME 0/* Broken dup of SI_USER */ +#endif /* __KERNEL__ */ +#endif
arch/metag/kernel/traps.c +1 -1
@@ -735,7 +735,7 @@ TBIRES fpe_handler(TBIRES State, int Sigelse if (error_state &TXSTAT_FPE_INEXACT_BIT ) info.si_code =FPE_FLTRES ;else - info.si_code =0 ; + info.si_code =FPE_FIXME ; info.si_errno =0 ; info.si_addr = (__force void __user *)regs->ctx.CurrPC;force_sig_info (SIGFPE , &info, current);
Patches currently in stable-queue which might be from [email protected] are
queue-4.15/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch queue-4.15/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch queue-4.15/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
Quoted 7 lines · <[email protected]> writes:
This is a note to let you know that I've just added the patch titled
signal/metag: Document a conflict with
SI_USERwith SIGFPEto the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Quoted 6 lines
The filename of the patch is:
signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
and it can be found in the queue-4.15 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
The patch is a noop functionality wise so I don't see the point of backporting it to stable.
Eric
Quoted 73 lines
From foo@baz Mon Apr 9 10:16:32 CEST 2018
From: "Eric W. Biederman" <[email protected]>
Date: Tue, 1 Aug 2017 10:37:40 -0500
Subject: signal/metag: Document a conflict withSI_USERwith SIGFPEFrom: "Eric W. Biederman" <[email protected]>
[ Upstream commit
b80328be53c215346b153769267b38f531d89b4f]Setting
si_codeto 0 results in a userspace seeing ansi_codeof 0. This is the samesi_codeasSI_USER. Posix and common sense requires thatSI_USERnot be a signal specificsi_code. As such this use of 0 for thesi_codeis a pretty horribly broken ABI.Further use of
si_code== 0 guaranteed thatcopy_siginfo_to_usersaw a value of__SI_KILLand now sees a value ofSIL_KILLwith the result hat uid and pid fields are copied and which might copying thesi_addrfield by accident but certainly not by design. Making this a very flakey implementation.Utilizing
FPE_FIXMEsiginfo_layoutwill now returnSIL_FAULTand the appropriate fields will reliably be copied.Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriatesi_code
- Don't handle cases which can't happenCc: James Hogan <[email protected]>
Cc: [email protected]
Ref:ac919f0883e5("metag: Traps")Signed-off-by "Eric W. Biederman" <[email protected]>Signed-off-by Sasha Levin <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- arch/metag/include/uapi/asm/siginfo.h | 7 +++++++ arch/metag/kernel/traps.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-)arch/metag/include/uapi/asm/siginfo.h +7
-0@@ -6,4 +6,11 @@#include <asm-generic/siginfo.h> +/* +* SIGFPE si_codes +*/ +#ifdef __KERNEL__ +#define FPE_FIXME 0/* Broken dup of SI_USER */ +#endif /* __KERNEL__ */ +#endif arch/metag/kernel/traps.c +1
-1@@ -735,7 +735,7 @@ TBIRES fpe_handler(TBIRES State, int Sigelse if (error_state &TXSTAT_FPE_INEXACT_BIT ) info.si_code =FPE_FLTRES ;else - info.si_code =0 ; + info.si_code =FPE_FIXME ; info.si_errno =0 ; info.si_addr = (__force void __user *)regs->ctx.CurrPC;force_sig_info (SIGFPE , &info, current);Patches currently in stable-queue which might be from [email protected] are
queue-4.15/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patchqueue-4.15/signal-arm-document-conflicts-with-si_user-and-sigfpe.patchqueue-4.15/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
Greg KH
maintainerQuoted 13 lines · Eric W. Biederman
Quoted 11 lines · <[email protected]> writes:
This is a note to let you know that I've just added the patch titled
signal/metag: Document a conflict with
SI_USERwith SIGFPEto the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
and it can be found in the queue-4.15 subdirectory.
Quoted 5 lines
Quoted 2 lines
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
The patch is a noop functionality wise so I don't see the point of backporting it to stable.
Thanks, I've now dropped all 3 of these patches from all of the stable queues.
greg k-h