@@ -0,0 +1,28 @@
+The fstat implementation does not initialize the nanosecond fields in the
+stat buffer; this caused funny values to turn up there, preventing, for
+instance, cp -p from preserving timestamps because utimensat rejected
+the out-of-bounds nanosecond values. Resetting the entire structure
+to zero fixes that.
+
+Signed-off-by: Ulrich Hecht <uli@suse.de>
+---
+ linux-user/syscall.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/linux-user/syscall.c b/linux-user/syscall.c
+index 2dc86ff..b413b08 100644
+--- a/linux-user/syscall.c
++++ b/linux-user/syscall.c
+@@ -5523,6 +5523,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
+
+ if (!lock_user_struct(VERIFY_WRITE, target_st, arg2, 0))
+ goto efault;
++ memset(target_st, 0, sizeof(*target_st));
+ __put_user(st.st_dev, &target_st->st_dev);
+ __put_user(st.st_ino, &target_st->st_ino);
+ __put_user(st.st_mode, &target_st->st_mode);
+--
+1.6.2.1
+
+
+
|