qemu-devel
[Top][All Lists]
Advanced

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

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


From: Paul Burton
Subject: [Qemu-devel] [PATCH v3 09/16] linux-user: allow NULL tv argument for settimeofday
Date: Sun, 22 Jun 2014 11:25:41 +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>
---
Changes in v3:
  - Fix coding style, checkpatch clean.

Changes in v2:
  - None.
---
 linux-user/syscall.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 4f01bb7..700cfec 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6353,11 +6353,15 @@ 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)) {
@@ -6366,7 +6370,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]