qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 6/6] linux-user: Fix trampoline code for CRIS


From: Riku Voipio
Subject: Re: [Qemu-devel] [PATCH 6/6] linux-user: Fix trampoline code for CRIS
Date: Mon, 3 Feb 2014 12:49:57 +0200
User-agent: Mutt/1.5.20 (2009-06-14)

On Sun, Feb 02, 2014 at 03:04:52AM +0000, address@hidden wrote:
> From: Stefan Weil <address@hidden>
> 
> __put_user can write bytes, words (2 bytes) or longwords (4 bytes).
> Here obviously words should have been written, but bytes were written,
> so values like 0x9c5f were truncated to 0x5f.
> 
> Fix this by changing retcode from uint8_t to to uint16_t in
> target_signal_frame and also in the unused rt_signal_frame.
> 
> This problem was reported by static code analysis (smatch).

Acked-by: Riku Voipio <address@hidden>

> Cc: address@hidden
> Signed-off-by: Stefan Weil <address@hidden>
> Reviewed-by: Peter Maydell <address@hidden>
> Tested-by: Edgar E. Iglesias <address@hidden>
> Reviewed-by: Edgar E. Iglesias <address@hidden>
> Signed-off-by: Edgar E. Iglesias <address@hidden>
> ---
>  linux-user/signal.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index 01d7c39..82e8592 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -3659,7 +3659,7 @@ struct target_sigcontext {
>  struct target_signal_frame {
>          struct target_sigcontext sc;
>          uint32_t extramask[TARGET_NSIG_WORDS - 1];
> -        uint8_t retcode[8];       /* Trampoline code. */
> +        uint16_t retcode[4];      /* Trampoline code. */
>  };
>  
>  struct rt_signal_frame {
> @@ -3667,7 +3667,7 @@ struct rt_signal_frame {
>          void *puc;
>          siginfo_t info;
>          struct ucontext uc;
> -        uint8_t retcode[8];       /* Trampoline code. */
> +        uint16_t retcode[4];      /* Trampoline code. */
>  };
>  
>  static void setup_sigcontext(struct target_sigcontext *sc, CPUCRISState *env)
> @@ -3745,8 +3745,8 @@ static void setup_frame(int sig, struct 
> target_sigaction *ka,
>        */
>       err |= __put_user(0x9c5f, frame->retcode+0);
>       err |= __put_user(TARGET_NR_sigreturn, 
> -                       frame->retcode+2);
> -     err |= __put_user(0xe93d, frame->retcode+4);
> +                       frame->retcode + 1);
> +     err |= __put_user(0xe93d, frame->retcode + 2);
>  
>       /* Save the mask.  */
>       err |= __put_user(set->sig[0], &frame->sc.oldmask);
> -- 
> 1.8.3.2
> 



reply via email to

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