[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/14] linux-user: fill target sigcontext struct acco
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PULL 12/14] linux-user: fill target sigcontext struct accordingly |
Date: |
Thu, 16 Feb 2017 15:22:25 +0100 |
From: Jose Ricardo Ziviani <address@hidden>
A segfault is noticed when an emulated program uses any of ucontext
regs fields. Risu detected this issue in the following operation when
handling a signal:
ucontext_t *uc = (ucontext_t*)uc;
uc->uc_mcontext.regs->nip += 4;
but this works fine:
uc->uc_mcontext.gp_regs[PT_NIP] += 4;
This patch set regs to a valid location as well as other sigcontext
fields.
Signed-off-by: Jose Ricardo Ziviani <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
linux-user/signal.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 5064de0..8209539 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -5155,6 +5155,7 @@ static void setup_rt_frame(int sig, struct
target_sigaction *ka,
target_ulong rt_sf_addr, newsp = 0;
int i, err = 0;
#if defined(TARGET_PPC64)
+ struct target_sigcontext *sc = 0;
struct image_info *image = ((TaskState *)thread_cpu->opaque)->info;
#endif
@@ -5183,6 +5184,10 @@ static void setup_rt_frame(int sig, struct
target_sigaction *ka,
#if defined(TARGET_PPC64)
mctx = &rt_sf->uc.tuc_sigcontext.mcontext;
trampptr = &rt_sf->trampoline[0];
+
+ sc = &rt_sf->uc.tuc_sigcontext;
+ __put_user(h2g(mctx), &sc->regs);
+ __put_user(sig, &sc->signal);
#else
mctx = &rt_sf->uc.tuc_mcontext;
trampptr = (uint32_t *)&rt_sf->uc.tuc_mcontext.tramp;
--
2.9.3
- [Qemu-devel] [PULL 00/14] Linux user for upstream patches, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 13/14] linux-user: Use correct types in load_symbols(), Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 01/14] linux-user: remove ifdef __USER_MISC, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 07/14] linux-user: manage two new IFLA host message types, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 09/14] linux-user: Update m68k syscall definitions to match Linux 4.6, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 12/14] linux-user: fill target sigcontext struct accordingly,
Laurent Vivier <=
- [Qemu-devel] [PULL 10/14] linux-user: fix settime old value location, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 08/14] linux-user: Update sh4 syscall definitions to match Linux 4.8, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 11/14] linux-user: fix tcg/mmap test, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 04/14] linux-user: Fix inotify_init1 support, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 02/14] linux-user: drop __cygwin__ ifdef, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 14/14] linux-user: Add FICLONE and FICLONERANGE ioctls, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 03/14] linux-user: Fix s390x safe-syscall for z900, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 06/14] linux-user: Fix mq_open, Laurent Vivier, 2017/02/16
- [Qemu-devel] [PULL 05/14] linux-user: Fix readahead, Laurent Vivier, 2017/02/16