qemu-trivial
[Top][All Lists]
Advanced

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

[Qemu-trivial] [PATCH] linux-user/main.c: Remove redundant end_exclusive


From: Chen Gang S
Subject: [Qemu-trivial] [PATCH] linux-user/main.c: Remove redundant end_exclusive()
Date: Fri, 23 Jan 2015 18:17:22 +0800
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

start/end_exclusive() need be pairs, except the start_exclusive() in
stop_all_tasks() which is only used by force_sig(), which will be abort.
So at present, start_exclusive() in stop_all_task() need not be paired.

So need remove end_exclusive() after queue_signal(). If could really
return from queue_signal(), which meant stop_all_task() is not called (
at least, not called in time), the next end_exclusive() would be issue.

Also use TARGET_SIGSEGV instead of SIGSEGV, since queue_signal() is for
TARGET_*, at present, queue_signal() is a normal function which may call
force_sig(), or return (may kill pid or queue signal, then return).

Signed-off-by: Chen Gang <address@hidden>
---
 linux-user/main.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/linux-user/main.c b/linux-user/main.c
index 8c70be4..a410a17 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -517,14 +517,12 @@ segv:
     end_exclusive();
     /* We get the PC of the entry address - which is as good as anything,
        on a real kernel what you get depends on which mode it uses. */
-    info.si_signo = SIGSEGV;
+    info.si_signo = TARGET_SIGSEGV;
     info.si_errno = 0;
     /* XXX: check env->error_code */
     info.si_code = TARGET_SEGV_MAPERR;
     info._sifields._sigfault._addr = env->exception.vaddress;
     queue_signal(env, info.si_signo, &info);
-
-    end_exclusive();
 }
 
 /* Handle a jump to the kernel code page.  */
-- 
1.9.3 (Apple Git-50)



reply via email to

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