[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 7/7] linux-user: Tidy TARGET_NR_rt_sigaction
From: |
Alex Bennée |
Subject: |
Re: [PATCH v2 7/7] linux-user: Tidy TARGET_NR_rt_sigaction |
Date: |
Fri, 23 Apr 2021 16:10:35 +0100 |
User-agent: |
mu4e 1.5.11; emacs 28.0.50 |
Richard Henderson <richard.henderson@linaro.org> writes:
> Initialize variables instead of elses.
> Use an else instead of a goto.
> Add braces.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/syscall.c | 32 +++++++++++++-------------------
> 1 file changed, 13 insertions(+), 19 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 9bcd485423..c7c3257f40 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -9060,32 +9060,26 @@ static abi_long do_syscall1(void *cpu_env, int num,
> abi_long arg1,
> target_ulong sigsetsize = arg4;
> target_ulong restorer = 0;
> #endif
> - struct target_sigaction *act;
> - struct target_sigaction *oact;
> + struct target_sigaction *act = NULL;
> + struct target_sigaction *oact = NULL;
>
> if (sigsetsize != sizeof(target_sigset_t)) {
> return -TARGET_EINVAL;
> }
> - if (arg2) {
> - if (!lock_user_struct(VERIFY_READ, act, arg2, 1)) {
> - return -TARGET_EFAULT;
> - }
> - } else {
> - act = NULL;
> + if (arg2 && !lock_user_struct(VERIFY_READ, act, arg2, 1)) {
> + return -TARGET_EFAULT;
> }
> - if (arg3) {
> - if (!lock_user_struct(VERIFY_WRITE, oact, arg3, 0)) {
> - ret = -TARGET_EFAULT;
> - goto rt_sigaction_fail;
> + if (arg3 && !lock_user_struct(VERIFY_WRITE, oact, arg3, 0)) {
> + ret = -TARGET_EFAULT;
> + } else {
> + ret = get_errno(do_sigaction(arg1, act, oact, restorer));
> + if (oact) {
> + unlock_user_struct(oact, arg3, 1);
> }
This does make me idly wonder if there is a way to handle unlocking in a
similar way to our autofree and LOCK_GUARD stuff. But that's not getting
in the way of approving of this improvement.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--
Alex Bennée
- [PATCH v2 0/7] linux-user: sigaction fixes/cleanups, Richard Henderson, 2021/04/22
- [PATCH v2 1/7] linux-user/alpha: Fix rt sigframe return, Richard Henderson, 2021/04/22
- [PATCH v2 2/7] linux-user/alpha: Rename the sigaction restorer field, Richard Henderson, 2021/04/22
- [PATCH v2 4/7] linux-user: Honor TARGET_ARCH_HAS_SA_RESTORER in do_syscall, Richard Henderson, 2021/04/22
- [PATCH v2 7/7] linux-user: Tidy TARGET_NR_rt_sigaction, Richard Henderson, 2021/04/22
- [PATCH v2 6/7] linux-user/alpha: Share code for TARGET_NR_sigaction, Richard Henderson, 2021/04/22
- [PATCH v2 5/7] linux-user/alpha: Define TARGET_ARCH_HAS_KA_RESTORER, Richard Henderson, 2021/04/22
- [PATCH v2 3/7] linux-user: Pass ka_restorer to do_sigaction, Richard Henderson, 2021/04/22
- Re: [PATCH v2 0/7] linux-user: sigaction fixes/cleanups, no-reply, 2021/04/22