All of lore.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: <gregkh@linuxfoundation.org>
Cc: alexander.levin@microsoft.com, benh@kernel.crashing.org,
	kumar.gala@freescale.com, mpe@ellerman.id.au, paulus@samba.org,
	<stable@vger.kernel.org>, <stable-commits@vger.kernel.org>
Subject: Re: Patch "signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP" has been added to the 4.15-stable tree
Date: Tue, 10 Apr 2018 09:45:14 -0500	[thread overview]
Message-ID: <87d0z7w26d.fsf@xmission.com> (raw)
In-Reply-To: <1523266614250228@kroah.com> (gregkh@linuxfoundation.org's message of "Mon, 09 Apr 2018 11:36:54 +0200")

<gregkh@linuxfoundation.org> writes:

> This is a note to let you know that I've just added the patch titled
>
>     signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP
>
> 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-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.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 <stable@vger.kernel.org> know about it.

The patch is a noop functionality wise so I don't see the point of
backporting it to stable.

Eric

> From foo@baz Mon Apr  9 10:16:32 CEST 2018
> From: "Eric W. Biederman" <ebiederm@xmission.com>
> Date: Sat, 19 Aug 2017 15:26:01 -0500
> Subject: signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP
>
> From: "Eric W. Biederman" <ebiederm@xmission.com>
>
>
> [ Upstream commit cf4674c46c66e45f238f8f7e81af2a444b970c0a ]
>
> 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
> that 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 and TRAP_FIXME, siginfo_layout() will now return
> SIL_FAULT and the appropriate fields will be reliably 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: Paul Mackerras <paulus@samba.org>
> Cc: Kumar Gala <kumar.gala@freescale.com>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc:  linuxppc-dev@lists.ozlabs.org
> Ref: 9bad068c24d7 ("[PATCH] ppc32: support for e500 and 85xx")
> Ref: 0ed70f6105ef ("PPC32: Provide proper siginfo information on various exceptions.")
> History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
>  arch/powerpc/include/uapi/asm/siginfo.h |   15 +++++++++++++++
>  arch/powerpc/kernel/traps.c             |   10 +++++-----
>  2 files changed, 20 insertions(+), 5 deletions(-)
>
> --- a/arch/powerpc/include/uapi/asm/siginfo.h
> +++ b/arch/powerpc/include/uapi/asm/siginfo.h
> @@ -18,4 +18,19 @@
>  #undef NSIGTRAP
>  #define NSIGTRAP	4
>  
> +/*
> + * SIGFPE si_codes
> + */
> +#ifdef __KERNEL__
> +#define FPE_FIXME	0	/* Broken dup of SI_USER */
> +#endif /* __KERNEL__ */
> +
> +/*
> + * SIGTRAP si_codes
> + */
> +#ifdef __KERNEL__
> +#define TRAP_FIXME	0	/* Broken dup of SI_USER */
> +#endif /* __KERNEL__ */
> +
> +
>  #endif	/* _ASM_POWERPC_SIGINFO_H */
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -917,7 +917,7 @@ void unknown_exception(struct pt_regs *r
>  	printk("Bad trap at PC: %lx, SR: %lx, vector=%lx\n",
>  	       regs->nip, regs->msr, regs->trap);
>  
> -	_exception(SIGTRAP, regs, 0, 0);
> +	_exception(SIGTRAP, regs, TRAP_FIXME, 0);
>  
>  	exception_exit(prev_state);
>  }
> @@ -939,7 +939,7 @@ bail:
>  
>  void RunModeException(struct pt_regs *regs)
>  {
> -	_exception(SIGTRAP, regs, 0, 0);
> +	_exception(SIGTRAP, regs, TRAP_FIXME, 0);
>  }
>  
>  void single_step_exception(struct pt_regs *regs)
> @@ -978,7 +978,7 @@ static void emulate_single_step(struct p
>  
>  static inline int __parse_fpscr(unsigned long fpscr)
>  {
> -	int ret = 0;
> +	int ret = FPE_FIXME;
>  
>  	/* Invalid operation */
>  	if ((fpscr & FPSCR_VE) && (fpscr & FPSCR_VX))
> @@ -1929,7 +1929,7 @@ void SPEFloatingPointException(struct pt
>  	extern int do_spe_mathemu(struct pt_regs *regs);
>  	unsigned long spefscr;
>  	int fpexc_mode;
> -	int code = 0;
> +	int code = FPE_FIXME;
>  	int err;
>  
>  	flush_spe_to_thread(current);
> @@ -1998,7 +1998,7 @@ void SPEFloatingPointRoundException(stru
>  		printk(KERN_ERR "unrecognized spe instruction "
>  		       "in %s at %lx\n", current->comm, regs->nip);
>  	} else {
> -		_exception(SIGFPE, regs, 0, regs->nip);
> +		_exception(SIGFPE, regs, FPE_FIXME, regs->nip);
>  		return;
>  	}
>  }
>
>
> Patches currently in stable-queue which might be from ebiederm@xmission.com 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

      reply	other threads:[~2018-04-10 14:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-09  9:36 Patch "signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP" has been added to the 4.15-stable tree gregkh
2018-04-10 14:45 ` Eric W. Biederman [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=87d0z7w26d.fsf@xmission.com \
    --to=ebiederm@xmission.com \
    --cc=alexander.levin@microsoft.com \
    --cc=benh@kernel.crashing.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kumar.gala@freescale.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=stable-commits@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.