From: ebiederm@xmission.com (Eric W. Biederman)
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: linuxppc-dev@lists.ozlabs.org, Paul Mackerras <paulus@samba.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 5/5] powerpc/signal: Use unsafe_copy_siginfo_to_user()
Date: Thu, 02 Sep 2021 13:38:40 -0500 [thread overview]
Message-ID: <87y28ex1ov.fsf@disp2133> (raw)
In-Reply-To: <7d391d915d2bd1c0f601f55f61f8dd4c70066229.1629732940.git.christophe.leroy@csgroup.eu> (Christophe Leroy's message of "Mon, 23 Aug 2021 15:35:55 +0000 (UTC)")
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Use unsafe_copy_siginfo_to_user() in order to do the copy
> within the user access block.
>
> On an mpc 8321 (book3s/32) the improvment is about 5% on a process
> sending a signal to itself.
Nacked-by: "Eric W. Biederman" <ebiederm@xmission.com>
copy_siginfo_to_user is not the same as copy_siginfo_to_user32.
As in this patch breaks 32bit userspace on powerpc.
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/kernel/signal_32.c | 13 ++++++-------
> arch/powerpc/kernel/signal_64.c | 5 +----
> 2 files changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
> index ff101e2b3bab..f9e16d108bc8 100644
> --- a/arch/powerpc/kernel/signal_32.c
> +++ b/arch/powerpc/kernel/signal_32.c
> @@ -710,12 +710,6 @@ static long restore_tm_user_regs(struct pt_regs *regs, struct mcontext __user *s
> }
> #endif
>
> -#ifdef CONFIG_PPC64
> -
> -#define copy_siginfo_to_user copy_siginfo_to_user32
> -
> -#endif /* CONFIG_PPC64 */
> -
> /*
> * Set up a signal frame for a "real-time" signal handler
> * (one which gets siginfo).
> @@ -779,14 +773,19 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
> asm("dcbst %y0; sync; icbi %y0; sync" :: "Z" (mctx->mc_pad[0]));
> }
> unsafe_put_sigset_t(&frame->uc.uc_sigmask, oldset, failed);
> +#ifndef CONFIG_COMPAT
> + unsafe_copy_siginfo_to_user(&frame->info, &ksig->info, failed);
> +#endif
>
> /* create a stack frame for the caller of the handler */
> unsafe_put_user(regs->gpr[1], newsp, failed);
>
> user_access_end();
>
> - if (copy_siginfo_to_user(&frame->info, &ksig->info))
> +#ifdef CONFIG_COMPAT
> + if (copy_siginfo_to_user32(&frame->info, &ksig->info))
> goto badframe;
> +#endif
>
> regs->link = tramp;
>
> diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
> index 2cca6c8febe1..82b73fbd937d 100644
> --- a/arch/powerpc/kernel/signal_64.c
> +++ b/arch/powerpc/kernel/signal_64.c
> @@ -901,15 +901,12 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
> }
>
> unsafe_copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set), badframe_block);
> + unsafe_copy_siginfo_to_user(&frame->info, &ksig->info, badframe_block);
> /* Allocate a dummy caller frame for the signal handler. */
> unsafe_put_user(regs->gpr[1], newsp, badframe_block);
>
> user_write_access_end();
>
> - /* Save the siginfo outside of the unsafe block. */
> - if (copy_siginfo_to_user(&frame->info, &ksig->info))
> - goto badframe;
> -
> /* Make sure signal handler doesn't get spurious FP exceptions */
> tsk->thread.fp_state.fpscr = 0;
WARNING: multiple messages have this Message-ID (diff)
From: ebiederm@xmission.com (Eric W. Biederman)
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2 5/5] powerpc/signal: Use unsafe_copy_siginfo_to_user()
Date: Thu, 02 Sep 2021 13:38:40 -0500 [thread overview]
Message-ID: <87y28ex1ov.fsf@disp2133> (raw)
In-Reply-To: <7d391d915d2bd1c0f601f55f61f8dd4c70066229.1629732940.git.christophe.leroy@csgroup.eu> (Christophe Leroy's message of "Mon, 23 Aug 2021 15:35:55 +0000 (UTC)")
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Use unsafe_copy_siginfo_to_user() in order to do the copy
> within the user access block.
>
> On an mpc 8321 (book3s/32) the improvment is about 5% on a process
> sending a signal to itself.
Nacked-by: "Eric W. Biederman" <ebiederm@xmission.com>
copy_siginfo_to_user is not the same as copy_siginfo_to_user32.
As in this patch breaks 32bit userspace on powerpc.
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/kernel/signal_32.c | 13 ++++++-------
> arch/powerpc/kernel/signal_64.c | 5 +----
> 2 files changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
> index ff101e2b3bab..f9e16d108bc8 100644
> --- a/arch/powerpc/kernel/signal_32.c
> +++ b/arch/powerpc/kernel/signal_32.c
> @@ -710,12 +710,6 @@ static long restore_tm_user_regs(struct pt_regs *regs, struct mcontext __user *s
> }
> #endif
>
> -#ifdef CONFIG_PPC64
> -
> -#define copy_siginfo_to_user copy_siginfo_to_user32
> -
> -#endif /* CONFIG_PPC64 */
> -
> /*
> * Set up a signal frame for a "real-time" signal handler
> * (one which gets siginfo).
> @@ -779,14 +773,19 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
> asm("dcbst %y0; sync; icbi %y0; sync" :: "Z" (mctx->mc_pad[0]));
> }
> unsafe_put_sigset_t(&frame->uc.uc_sigmask, oldset, failed);
> +#ifndef CONFIG_COMPAT
> + unsafe_copy_siginfo_to_user(&frame->info, &ksig->info, failed);
> +#endif
>
> /* create a stack frame for the caller of the handler */
> unsafe_put_user(regs->gpr[1], newsp, failed);
>
> user_access_end();
>
> - if (copy_siginfo_to_user(&frame->info, &ksig->info))
> +#ifdef CONFIG_COMPAT
> + if (copy_siginfo_to_user32(&frame->info, &ksig->info))
> goto badframe;
> +#endif
>
> regs->link = tramp;
>
> diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
> index 2cca6c8febe1..82b73fbd937d 100644
> --- a/arch/powerpc/kernel/signal_64.c
> +++ b/arch/powerpc/kernel/signal_64.c
> @@ -901,15 +901,12 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
> }
>
> unsafe_copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set), badframe_block);
> + unsafe_copy_siginfo_to_user(&frame->info, &ksig->info, badframe_block);
> /* Allocate a dummy caller frame for the signal handler. */
> unsafe_put_user(regs->gpr[1], newsp, badframe_block);
>
> user_write_access_end();
>
> - /* Save the siginfo outside of the unsafe block. */
> - if (copy_siginfo_to_user(&frame->info, &ksig->info))
> - goto badframe;
> -
> /* Make sure signal handler doesn't get spurious FP exceptions */
> tsk->thread.fp_state.fpscr = 0;
next prev parent reply other threads:[~2021-09-02 19:21 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-23 15:35 [PATCH v2 1/5] powerpc/signal64: Access function descriptor with user access block Christophe Leroy
2021-08-23 15:35 ` Christophe Leroy
2021-08-23 15:35 ` [PATCH v2 2/5] powerpc/signal: Include the new stack frame inside the " Christophe Leroy
2021-08-23 15:35 ` Christophe Leroy
2021-08-23 15:35 ` [PATCH v2 3/5] signal: Add unsafe_copy_siginfo_to_user() Christophe Leroy
2021-08-23 15:35 ` Christophe Leroy
2021-09-02 6:54 ` Christoph Hellwig
2021-09-02 6:54 ` Christoph Hellwig
2021-09-02 16:05 ` Linus Torvalds
2021-09-02 16:05 ` Linus Torvalds
2021-09-13 12:59 ` Christophe Leroy
2021-09-13 12:59 ` Christophe Leroy
2021-09-02 18:43 ` Eric W. Biederman
2021-09-02 18:43 ` Eric W. Biederman
2021-09-03 8:56 ` Christophe Leroy
2021-09-03 8:56 ` Christophe Leroy
2021-09-08 18:17 ` Eric W. Biederman
2021-09-08 18:17 ` Eric W. Biederman
2021-09-10 10:27 ` Christophe Leroy
2021-09-10 10:27 ` Christophe Leroy
2021-09-11 15:58 ` Eric W. Biederman
2021-09-11 15:58 ` Eric W. Biederman
2021-09-13 12:56 ` Christophe Leroy
2021-09-13 12:56 ` Christophe Leroy
2021-08-23 15:35 ` [PATCH v2 4/5] powerpc/uaccess: Add unsafe_clear_user() Christophe Leroy
2021-08-23 15:35 ` Christophe Leroy
2021-08-23 15:35 ` [PATCH v2 5/5] powerpc/signal: Use unsafe_copy_siginfo_to_user() Christophe Leroy
2021-08-23 15:35 ` Christophe Leroy
2021-09-02 18:38 ` Eric W. Biederman [this message]
2021-09-02 18:38 ` Eric W. Biederman
2021-09-03 8:53 ` Christophe Leroy
2021-09-03 8:53 ` Christophe Leroy
2021-09-02 6:49 ` [PATCH v2 1/5] powerpc/signal64: Access function descriptor with user access block Christoph Hellwig
2021-09-02 6:49 ` Christoph Hellwig
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=87y28ex1ov.fsf@disp2133 \
--to=ebiederm@xmission.com \
--cc=christophe.leroy@csgroup.eu \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.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.