From patchwork Fri Jun 6 09:46:49 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Riku Voipio X-Patchwork-Id: 31478 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ob0-f199.google.com (mail-ob0-f199.google.com [209.85.214.199]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 84673203C3 for ; Fri, 6 Jun 2014 10:34:36 +0000 (UTC) Received: by mail-ob0-f199.google.com with SMTP id wm4sf11084414obc.6 for ; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:date :message-id:cc:subject:precedence:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:errors-to:sender :x-original-sender:x-original-authentication-results:mailing-list; bh=nBKWtz1zfU3kEoZ2XDPOEEtKQ/Cb427IpMQWIHjPEIw=; b=PecZISxIFw5Ri/fWrNqe9qVrsauNglmsPNnrDYeZ7K2DE0pnUZbLyUZqNXkVdLBq0k irKYOdiS8vTv5S+5tz3FpEGJn9QQNSO0nwDdOtmsXCOLcNEjUt6qYjMr2RhDdnuNnJcr 35Jwrq9p2i2+877k5XpEohVU2qOstsXuPWUelsbY2Ik4A8WIua+9jTN0n8z5kds+wleS 1xhuTXYrCc5kqth7TO5f13E8cUnk6KC8qeJMFQzV7BLCaz/2Zl09+b1pXvee127cn9bI MoFKprt+hVIUMp8337TafEhMW52HOz05CbR156u8JSjokEE1/s3K7dHqqwsyjGMmkb8s C4Wg== X-Gm-Message-State: ALoCoQn+9P3Y3CTyv8QBRhh2W9x4Q1iJM8NIVQQWNX3mrs3hT2Fj+TsIrtGTgy04VPm5hj3WOwWT X-Received: by 10.42.235.81 with SMTP id kf17mr2449936icb.13.1402050875931; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.37.164 with SMTP id r33ls622596qgr.2.gmail; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) X-Received: by 10.52.93.201 with SMTP id cw9mr2474086vdb.80.1402050875756; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) Received: from mail-ve0-f182.google.com (mail-ve0-f182.google.com [209.85.128.182]) by mx.google.com with ESMTPS id s14si5839561vem.73.2014.06.06.03.34.35 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 06 Jun 2014 03:34:35 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.128.182 as permitted sender) client-ip=209.85.128.182; Received: by mail-ve0-f182.google.com with SMTP id sa20so2848895veb.13 for ; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) X-Received: by 10.220.53.72 with SMTP id l8mr3887304vcg.16.1402050875677; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.221.54.6 with SMTP id vs6csp86991vcb; Fri, 6 Jun 2014 03:34:35 -0700 (PDT) X-Received: by 10.140.49.171 with SMTP id q40mr6760434qga.7.1402050875223; Fri, 06 Jun 2014 03:34:35 -0700 (PDT) Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id o20si12178769qgo.0.2014.06.06.03.34.35 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Fri, 06 Jun 2014 03:34:35 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Received: from localhost ([::1]:46215 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WsqoN-0005XP-P1 for patch@linaro.org; Fri, 06 Jun 2014 05:51:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35267) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wsqju-0006G6-JL for qemu-devel@nongnu.org; Fri, 06 Jun 2014 05:47:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wsqjm-0001Wy-BH for qemu-devel@nongnu.org; Fri, 06 Jun 2014 05:47:10 -0400 Received: from afflict.kos.to ([92.243.29.197]:38369) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wsqjm-0001WC-13 for qemu-devel@nongnu.org; Fri, 06 Jun 2014 05:47:02 -0400 Received: from afflict.kos.to (afflict [92.243.29.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by afflict.kos.to (Postfix) with ESMTPSA id 8CC6726544; Fri, 6 Jun 2014 11:46:59 +0200 (CEST) From: riku.voipio@linaro.org To: qemu-devel@nongnu.org Date: Fri, 6 Jun 2014 12:46:49 +0300 Message-Id: <1402048017-30604-6-git-send-email-riku.voipio@linaro.org> X-Mailer: git-send-email 1.7.10.4 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 92.243.29.197 Cc: Riku Voipio Subject: [Qemu-devel] [PATCH v2 05/13] signal/all: remove return value from restore_sigcontext X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: riku.voipio@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.128.182 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 From: Riku Voipio 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 --- 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) {