Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=272a3713bb9e302e0455c894c41180a482d2c8a3
Commit:     272a3713bb9e302e0455c894c41180a482d2c8a3
Parent:     bd8559c38ee5be40ce2c57a80fd3c3e978cca267
Author:     Eric Dumazet <[EMAIL PROTECTED]>
AuthorDate: Wed May 2 19:27:11 2007 +0200
Committer:  Andi Kleen <[EMAIL PROTECTED]>
CommitDate: Wed May 2 19:27:11 2007 +0200

    [PATCH] x86-64: fix vtime() vsyscall
    
    There is a tiny probability that the return value from vtime(time_t *t) is
    Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>
    
    different than the value stored in *t
    
    Using a temporary variable solves the problem and gives a faster code.
    
       17:   48 85 ff                test   %rdi,%rdi
       1a:   48 8b 05 00 00 00 00    mov    0(%rip),%rax        #
    __vsyscall_gtod_data.wall_time_tv.tv_sec
       21:   74 03                   je     26
       23:   48 89 07                mov    %rax,(%rdi)
       26:   c9                      leaveq
       27:   c3                      retq
    
    Signed-off-by: Eric Dumazet <[EMAIL PROTECTED]>
---
 arch/x86_64/kernel/vsyscall.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/x86_64/kernel/vsyscall.c b/arch/x86_64/kernel/vsyscall.c
index d14cbb3..ba330f8 100644
--- a/arch/x86_64/kernel/vsyscall.c
+++ b/arch/x86_64/kernel/vsyscall.c
@@ -156,11 +156,13 @@ int __vsyscall(0) vgettimeofday(struct timeval * tv, 
struct timezone * tz)
  * unlikely */
 time_t __vsyscall(1) vtime(time_t *t)
 {
+       time_t result;
        if (unlikely(!__vsyscall_gtod_data.sysctl_enabled))
                return time_syscall(t);
-       else if (t)
-               *t = __vsyscall_gtod_data.wall_time_tv.tv_sec;
-       return __vsyscall_gtod_data.wall_time_tv.tv_sec;
+       result = __vsyscall_gtod_data.wall_time_tv.tv_sec;
+       if (t)
+               *t = result;
+       return result;
 }
 
 /* Fast way to get current CPU and node.
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to