diff options
author | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-02-11 20:03:13 +0000 |
---|---|---|
committer | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-02-11 20:03:13 +0000 |
commit | e55744879fa56bdd257beb05de3163c917470731 (patch) | |
tree | 7bf39a969d5d927f818341215f4e48ec70d0e141 /linux-user | |
parent | f2f1ac827d9867db4444498a64582595b001e40f (diff) |
Fix previous Linux userland emulation breakage.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2423 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/syscall.c | 19 |
1 files 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: |