From e55744879fa56bdd257beb05de3163c917470731 Mon Sep 17 00:00:00 2001 From: ths Date: Sun, 11 Feb 2007 20:03:13 +0000 Subject: [PATCH] Fix previous Linux userland emulation breakage. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2423 c046a42c-6fe2-441c-8c8c-71466251a162 --- linux-user/syscall.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5020f3fee4..3506ece1ec 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2952,7 +2952,9 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, #endif case TARGET_NR_syslog: - ret = get_errno(sys_syslog((int)arg1, (char*)arg2, (int)arg3)); + p = lock_user_string(arg2); + ret = get_errno(sys_syslog((int)arg1, p, (int)arg3)); + unlock_user(p, arg2, 0); break; case TARGET_NR_setitimer: @@ -3423,7 +3425,20 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, case TARGET_NR_nfsservctl: goto unimplemented; case TARGET_NR_prctl: - ret = get_errno(prctl(arg1, arg2, arg3, arg4, arg5)); + switch (arg1) + { + case PR_GET_PDEATHSIG: + { + int deathsig; + ret = get_errno(prctl(arg1, &deathsig, arg3, arg4, arg5)); + if (!is_error(ret) && arg2) + tput32(arg2, deathsig); + } + break; + default: + ret = get_errno(prctl(arg1, arg2, arg3, arg4, arg5)); + break; + } break; #ifdef TARGET_NR_pread case TARGET_NR_pread: -- GitLab