qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v2 05/13] signal/all: remove return value from resto


From: riku . voipio
Subject: [Qemu-devel] [PATCH v2 05/13] signal/all: remove return value from restore_sigcontext
Date: Fri, 6 Jun 2014 12:46:49 +0300

From: Riku Voipio <address@hidden>

make most implementations of restore_sigcontext void and
remove checking it's return value from functions calling
restore_sigcontext.

The exception is the X86 version of the function that is
too different from others to deal in this way.

Signed-off-by: Riku Voipio <address@hidden>
---
 linux-user/signal.c | 65 +++++++++++++----------------------------------------
 1 file changed, 16 insertions(+), 49 deletions(-)

diff --git a/linux-user/signal.c b/linux-user/signal.c
index 421bd48..7b828bf 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -1546,12 +1546,6 @@ static const abi_ulong retcodes[4] = {
        SWI_SYS_RT_SIGRETURN,   SWI_THUMB_RT_SIGRETURN
 };
 
-
-static inline int valid_user_regs(CPUARMState *regs)
-{
-    return 1;
-}
-
 static void
 setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/
                  CPUARMState *env, abi_ulong mask)
@@ -1842,10 +1836,9 @@ static void setup_rt_frame(int usig, struct 
target_sigaction *ka,
     }
 }
 
-static int
+static void
 restore_sigcontext(CPUARMState *env, struct target_sigcontext *sc)
 {
-       int err = 0;
         uint32_t cpsr;
 
     __get_user(env->regs[0], &sc->arm_r0);
@@ -1868,10 +1861,6 @@ restore_sigcontext(CPUARMState *env, struct 
target_sigcontext *sc)
     __get_user(cpsr, &sc->arm_cpsr);
         cpsr_write(env, cpsr, CPSR_USER | CPSR_EXEC);
 #endif
-
-       err |= !valid_user_regs(env);
-
-       return err;
 }
 
 static long do_sigreturn_v1(CPUARMState *env)
@@ -1905,8 +1894,7 @@ static long do_sigreturn_v1(CPUARMState *env)
         target_to_host_sigset_internal(&host_set, &set);
         do_sigprocmask(SIG_SETMASK, &host_set, NULL);
 
-       if (restore_sigcontext(env, &frame->sc))
-               goto badframe;
+    restore_sigcontext(env, &frame->sc);
 
 #if 0
        /* Send SIGTRAP if we're single-stepping */
@@ -1986,8 +1974,7 @@ static int do_sigframe_return_v2(CPUARMState *env, 
target_ulong frame_addr,
     target_to_host_sigset(&host_set, &uc->tuc_sigmask);
     do_sigprocmask(SIG_SETMASK, &host_set, NULL);
 
-    if (restore_sigcontext(env, &uc->tuc_mcontext))
-        return 1;
+    restore_sigcontext(env, &uc->tuc_mcontext);
 
     /* Restore coprocessor signal frame */
     regspace = uc->tuc_regspace;
@@ -2077,8 +2064,7 @@ static long do_rt_sigreturn_v1(CPUARMState *env)
         target_to_host_sigset(&host_set, &frame->uc.tuc_sigmask);
         do_sigprocmask(SIG_SETMASK, &host_set, NULL);
 
-       if (restore_sigcontext(env, &frame->uc.tuc_mcontext))
-               goto badframe;
+    restore_sigcontext(env, &frame->uc.tuc_mcontext);
 
        if (do_sigaltstack(frame_addr + offsetof(struct rt_sigframe_v1, 
uc.tuc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT)
                goto badframe;
@@ -2889,10 +2875,9 @@ static inline void setup_sigcontext(CPUMIPSState *regs,
     }
 }
 
-static inline int
+static inline void
 restore_sigcontext(CPUMIPSState *regs, struct target_sigcontext *sc)
 {
-    int err = 0;
     int i;
 
     __get_user(regs->CP0_EPC, &sc->sc_pc);
@@ -2919,8 +2904,6 @@ restore_sigcontext(CPUMIPSState *regs, struct 
target_sigcontext *sc)
     for (i = 0; i < 32; ++i) {
         __get_user(regs->active_fpu.fpr[i].d, &sc->sc_fpregs[i]);
     }
-
-    return err;
 }
 
 /*
@@ -3031,8 +3014,7 @@ long do_sigreturn(CPUMIPSState *regs)
     target_to_host_sigset_internal(&blocked, &target_set);
     do_sigprocmask(SIG_SETMASK, &blocked, NULL);
 
-    if (restore_sigcontext(regs, &frame->sf_sc))
-       goto badframe;
+    restore_sigcontext(regs, &frame->sf_sc);
 
 #if 0
     /*
@@ -3135,8 +3117,7 @@ long do_rt_sigreturn(CPUMIPSState *env)
     target_to_host_sigset(&blocked, &frame->rs_uc.tuc_sigmask);
     do_sigprocmask(SIG_SETMASK, &blocked, NULL);
 
-    if (restore_sigcontext(env, &frame->rs_uc.tuc_mcontext))
-        goto badframe;
+    restore_sigcontext(env, &frame->rs_uc.tuc_mcontext);
 
     if (do_sigaltstack(frame_addr +
                       offsetof(struct target_rt_sigframe, rs_uc.tuc_stack),
@@ -3249,10 +3230,9 @@ static void setup_sigcontext(struct target_sigcontext 
*sc,
     __put_user(mask, &sc->oldmask);
 }
 
-static int restore_sigcontext(CPUSH4State *regs, struct target_sigcontext *sc,
+static void restore_sigcontext(CPUSH4State *regs, struct target_sigcontext *sc,
                               target_ulong *r0_p)
 {
-    unsigned int err = 0;
     int i;
 
 #define COPY(x)         __get_user(regs->x, &sc->sc_##x)
@@ -3277,7 +3257,6 @@ static int restore_sigcontext(CPUSH4State *regs, struct 
target_sigcontext *sc,
 
     regs->tra = -1;         /* disable syscall checks */
     __get_user(*r0_p, &sc->sc_gregs[0]);
-    return err;
 }
 
 static void setup_frame(int sig, struct target_sigaction *ka,
@@ -3422,8 +3401,7 @@ long do_sigreturn(CPUSH4State *regs)
     target_to_host_sigset_internal(&blocked, &target_set);
     do_sigprocmask(SIG_SETMASK, &blocked, NULL);
 
-    if (restore_sigcontext(regs, &frame->sc, &r0))
-        goto badframe;
+    restore_sigcontext(regs, &frame->sc, &r0);
 
     unlock_user_struct(frame, frame_addr, 0);
     return r0;
@@ -3451,8 +3429,7 @@ long do_rt_sigreturn(CPUSH4State *regs)
     target_to_host_sigset(&blocked, &frame->uc.tuc_sigmask);
     do_sigprocmask(SIG_SETMASK, &blocked, NULL);
 
-    if (restore_sigcontext(regs, &frame->uc.tuc_mcontext, &r0))
-        goto badframe;
+    restore_sigcontext(regs, &frame->uc.tuc_mcontext, &r0);
 
     if (do_sigaltstack(frame_addr +
                       offsetof(struct target_rt_sigframe, uc.tuc_stack),
@@ -5086,10 +5063,9 @@ static void setup_sigcontext(struct target_sigcontext 
*sc, CPUM68KState *env,
     __put_user(env->pc, &sc->sc_pc);
 }
 
-static int
+static void
 restore_sigcontext(CPUM68KState *env, struct target_sigcontext *sc, int *pd0)
 {
-    int err = 0;
     int temp;
 
     __get_user(env->aregs[7], &sc->sc_usp);
@@ -5101,8 +5077,6 @@ restore_sigcontext(CPUM68KState *env, struct 
target_sigcontext *sc, int *pd0)
     env->sr = (env->sr & 0xff00) | (temp & 0xff);
 
     *pd0 = tswapl(sc->sc_d0);
-
-    return err;
 }
 
 /*
@@ -5343,8 +5317,7 @@ long do_sigreturn(CPUM68KState *env)
 
     /* restore registers */
 
-    if (restore_sigcontext(env, &frame->sc, &d0))
-        goto badframe;
+    restore_sigcontext(env, &frame->sc, &d0);
 
     unlock_user_struct(frame, frame_addr, 0);
     return d0;
@@ -5462,11 +5435,11 @@ static void setup_sigcontext(struct target_sigcontext 
*sc, CPUAlphaState *env,
     __put_user(0, &sc->sc_traparg_a2); /* FIXME */
 }
 
-static int restore_sigcontext(CPUAlphaState *env,
+static void restore_sigcontext(CPUAlphaState *env,
                               struct target_sigcontext *sc)
 {
     uint64_t fpcr;
-    int i, err = 0;
+    int i;
 
     __get_user(env->pc, &sc->sc_pc);
 
@@ -5479,8 +5452,6 @@ static int restore_sigcontext(CPUAlphaState *env,
 
     __get_user(fpcr, &sc->sc_fpcr);
     cpu_alpha_store_fpcr(env, fpcr);
-
-    return err;
 }
 
 static inline abi_ulong get_sigframe(struct target_sigaction *sa,
@@ -5614,9 +5585,7 @@ long do_sigreturn(CPUAlphaState *env)
     target_to_host_sigset_internal(&set, &target_set);
     do_sigprocmask(SIG_SETMASK, &set, NULL);
 
-    if (restore_sigcontext(env, sc)) {
-        goto badframe;
-    }
+    restore_sigcontext(env, sc);
     unlock_user_struct(sc, sc_addr, 0);
     return env->ir[IR_V0];
 
@@ -5637,9 +5606,7 @@ long do_rt_sigreturn(CPUAlphaState *env)
     target_to_host_sigset(&set, &frame->uc.tuc_sigmask);
     do_sigprocmask(SIG_SETMASK, &set, NULL);
 
-    if (restore_sigcontext(env, &frame->uc.tuc_mcontext)) {
-        goto badframe;
-    }
+    restore_sigcontext(env, &frame->uc.tuc_mcontext);
     if (do_sigaltstack(frame_addr + offsetof(struct target_rt_sigframe,
                                              uc.tuc_stack),
                        0, env->ir[IR_SP]) == -EFAULT) {
-- 
2.0.0.rc2




reply via email to

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