• Huacai Chen's avatar
    timekeeping/vsyscall: Update VDSO data unconditionally · 52338415
    Huacai Chen authored
    The update of the VDSO data is depending on __arch_use_vsyscall() returning
    True. This is a leftover from the attempt to map the features of various
    architectures 1:1 into generic code.
    
    The usage of __arch_use_vsyscall() in the actual vsyscall implementations
    got dropped and replaced by the requirement for the architecture code to
    return U64_MAX if the global clocksource is not usable in the VDSO.
    
    But the __arch_use_vsyscall() check in the update code stayed which causes
    the VDSO data to be stale or invalid when an architecture actually
    implements that function and returns False when the current clocksource is
    not usable in the VDSO.
    
    As a consequence the VDSO implementations of clock_getres(), time(),
    clock_gettime(CLOCK_.*_COARSE) operate on invalid data and return bogus
    information.
    
    Remove the __arch_use_vsyscall() check from the VDSO update function and
    update the VDSO data unconditionally.
    
    [ tglx: Massaged changelog and removed the now useless implementations in
      	asm-generic/ARM64/MIPS ]
    
    Fixes: 44f57d78 ("timekeeping: Provide a generic update_vsyscall() implementation")
    Signed-off-by: default avatarHuacai Chen <chenhc@lemote.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1571887709-11447-1-git-send-email-chenhc@lemote.com
    52338415
vsyscall.h 970 Bytes