diff --git a/kernel/aster-nix/src/syscall/time.rs b/kernel/aster-nix/src/syscall/time.rs index dd6e569a2..79df130b9 100644 --- a/kernel/aster-nix/src/syscall/time.rs +++ b/kernel/aster-nix/src/syscall/time.rs @@ -6,8 +6,15 @@ use crate::{log_syscall_entry, prelude::*, time::SystemTime, util::write_val_to_ pub fn sys_time(tloc: Vaddr) -> Result { log_syscall_entry!(SYS_TIME); debug!("tloc = 0x{tloc:x}"); - let now = SystemTime::now(); - let now_as_secs = now.duration_since(&SystemTime::UNIX_EPOCH)?.as_secs(); - write_val_to_user(tloc, &now_as_secs)?; - Ok(SyscallReturn::Return(0)) + + let now_as_secs = { + let now = SystemTime::now(); + now.duration_since(&SystemTime::UNIX_EPOCH)?.as_secs() + }; + + if tloc != 0 { + write_val_to_user(tloc, &now_as_secs)?; + } + + Ok(SyscallReturn::Return(now_as_secs as _)) }