• Paul Mackerras's avatar
    Allow times and time system calls to return small negative values · e3d5a27d
    Paul Mackerras authored
    At the moment, the times() system call will appear to fail for a period
    shortly after boot, while the value it want to return is between -4095 and
    -1.  The same thing will also happen for the time() system call on 32-bit
    platforms some time in 2106 or so.
    
    On some platforms, such as x86, this is unavoidable because of the system
    call ABI, but other platforms such as powerpc have a separate error
    indication from the return value, so system calls can in fact return small
    negative values without indicating an error.  On those platforms,
    force_successful_syscall_return() provides a way to indicate that the
    system call return value should not be treated as an error even if it is
    in the range which would normally be taken as a negative error number.
    
    This adds a force_successful_syscall_return() call to the time() and
    times() system calls plus their 32-bit compat versions, so that they don't
    erroneously indicate an error on those platforms whose system call ABI has
    a separate error indication.  This will not affect anything on other
    platforms.
    
    Joakim Tjernlund added the fix for time() and the compat versions of
    time() and times(), after I did the fix for times().
    Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e3d5a27d
compat.c 27.9 KB