All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] linux-user/signal.c: Skip calling unlock_user_struct() when lock_user_struct() failed for target m68k
@ 2015-09-13  3:25 gang.chen.5i5j
  0 siblings, 0 replies; only message in thread
From: gang.chen.5i5j @ 2015-09-13  3:25 UTC (permalink / raw)
  To: riku.voipio, peter.maydell, rth; +Cc: qemu-devel, xili_gchen_5257, Chen Gang

From: Chen Gang <gang.chen.5i5j@gmail.com>

For target m68k, setup_rt_frame() and do_rt_sigreturn() have this issue.

Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
---
 linux-user/signal.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/linux-user/signal.c b/linux-user/signal.c
index cead97b..0265c46 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -5160,7 +5160,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
 
     frame_addr = get_sigframe(ka, env, sizeof *frame);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
-	goto give_sigsegv;
+        goto err;
 
     __put_user(sig, &frame->sig);
 
@@ -5215,6 +5215,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
 
 give_sigsegv:
     unlock_user_struct(frame, frame_addr, 1);
+err:
     force_sig(TARGET_SIGSEGV);
 }
 
@@ -5261,7 +5262,7 @@ long do_rt_sigreturn(CPUM68KState *env)
     int d0;
 
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
-        goto badframe;
+        goto err;
 
     target_to_host_sigset_internal(&set, &target_set);
     do_sigprocmask(SIG_SETMASK, &set, NULL);
@@ -5281,6 +5282,7 @@ long do_rt_sigreturn(CPUM68KState *env)
 
 badframe:
     unlock_user_struct(frame, frame_addr, 0);
+err:
     force_sig(TARGET_SIGSEGV);
     return 0;
 }
-- 
1.9.3

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-09-13  3:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-13  3:25 [Qemu-devel] [PATCH] linux-user/signal.c: Skip calling unlock_user_struct() when lock_user_struct() failed for target m68k gang.chen.5i5j

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.