qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 09/16] linux-user: allow NULL tv argument for settim


From: Paul Burton
Subject: [Qemu-devel] [PATCH 09/16] linux-user: allow NULL tv argument for settimeofday
Date: Sun, 15 Jun 2014 17:18:26 +0100

The tv argument to the settimeofday syscall is allowed to be NULL, if
the program only wishes to provide the timezone. QEMU previously
returned -EFAULT when tv was NULL. Instead, execute the syscall &
provide NULL to the kernel as the target program expected.

Signed-off-by: Paul Burton <address@hidden>
---
 linux-user/syscall.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index d30dff8..8ebb9e7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6344,11 +6344,14 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
arg1,
         break;
     case TARGET_NR_settimeofday:
         {
-            struct timeval tv;
+            struct timeval tv, *ptv = NULL;
             struct timezone tz, *ptz = NULL;
 
-            if (copy_from_user_timeval(&tv, arg1))
-                goto efault;
+            if (arg1) {
+                if (copy_from_user_timeval(&tv, arg1))
+                    goto efault;
+                ptv = &tv;
+            }
 
             if (arg2) {
                 if (copy_from_user_timezone(&tz, arg2))
@@ -6356,7 +6359,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
                 ptz = &tz;
             }
 
-            ret = get_errno(settimeofday(&tv, ptz));
+            ret = get_errno(settimeofday(ptv, ptz));
         }
         break;
 #if defined(TARGET_NR_select)
-- 
2.0.0




reply via email to

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