qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]