--- 0001/linux-user/syscall.c
+++ work/linux-user/syscall.c	2007-11-29 22:32:45.000000000 +0900
@@ -3206,6 +3206,7 @@ abi_long do_syscall(void *cpu_env, int n
             argp = alloca((argc + 1) * sizeof(void *));
             envp = alloca((envc + 1) * sizeof(void *));
 
+            guest_argp = arg2;
             for (gp = guest_argp, q = argp; ;
                   gp += sizeof(abi_ulong), q++) {
                 if (get_user_ual(addr, gp))
@@ -3217,6 +3218,7 @@ abi_long do_syscall(void *cpu_env, int n
             }
             *q = NULL;
 
+            guest_envp = arg3;
             for (gp = guest_envp, q = envp; ;
                   gp += sizeof(abi_ulong), q++) {
                 if (get_user_ual(addr, gp))
