lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 14 Jan 2020 19:52:37 +0100
From:   Thomas Gleixner <tglx@...utronix.de>
To:     LKML <linux-kernel@...r.kernel.org>
Cc:     x86@...nel.org, John Stultz <john.stultz@...aro.org>,
        Vincenzo Frascino <vincenzo.frascino@....com>,
        Andy Lutomirski <luto@...nel.org>,
        Christophe Leroy <christophe.leroy@....fr>,
        Paolo Bonzini <pbonzini@...hat.com>,
        Boris Ostrovsky <boris.ostrovsky@...cle.com>,
        Juergen Gross <jgross@...e.com>,
        Haiyang Zhang <haiyangz@...rosoft.com>,
        Sasha Levin <sashal@...nel.org>,
        Ralf Baechle <ralf@...ux-mips.org>,
        Paul Burton <paulburton@...nel.org>,
        James Hogan <jhogan@...nel.org>,
        Russell King <linux@...linux.org.uk>,
        Catalin Marinas <catalin.marinas@....com>,
        Will Deacon <will@...nel.org>,
        Mark Rutland <mark.rutland@....com>,
        Marc Zyngier <maz@...nel.org>
Subject: [patch 00/15] lib/vdso: Bugfix and consolidation

The recent discussions about changes in the VDSO to support PPC
triggered this consolidation series which in turn unearthed a subtle
bug affecting ARM.

The bug affects only ARM 32bit systems which lack a VDSO capable
timer. The absence of the ARM architected timer causes the VDSO update
code to terminate early. As a result the parts of the VDSO data which
is usable without a VDSO capable clocksource are not updated either,
but the VDSO code uses them, i.e. it uses stale data and will serve
that forever. The fix is to make only the parts of the update
conditional which are related to te high resolution interfaces.

The rest of the series is addressing the following points:

 - Allow architectures to compile out the high resolution parts of the
   VDSO library when they know at compile time that no VDSO capable
   clocksource will be available.

 - Move the storage of the VDSO clockmode into generic code and remove
   all the redundant copies of the storage and the handling of it from
   the architectures. 

   This allows to remove the check for a valid clocksource at runtime
   from the clock readout function and make it generic by checking
   for a clock mode != NONE in the generic code. This generates better
   code on PPC and does not affect x86/arm performance.

Thanks,

       tglx

8<----------
 arch/arm/Kconfig                            |    1 
 arch/arm/include/asm/clocksource.h          |    5 -
 arch/arm/include/asm/vdso/gettimeofday.h    |    6 +
 arch/arm/include/asm/vdso/vsyscall.h        |   35 ---------
 arch/arm64/Kconfig                          |    1 
 arch/arm64/include/asm/clocksource.h        |    5 -
 arch/arm64/include/asm/vdso/vsyscall.h      |    9 --
 arch/mips/Kconfig                           |    1 
 arch/mips/include/asm/clocksource.h         |   18 ----
 arch/mips/include/asm/vdso/vsyscall.h       |    9 --
 arch/mips/kernel/csrc-r4k.c                 |    2 
 arch/x86/Kconfig                            |    1 
 arch/x86/entry/vdso/vma.c                   |    8 +-
 arch/x86/include/asm/clocksource.h          |   23 ++++--
 arch/x86/include/asm/mshyperv.h             |    4 -
 arch/x86/include/asm/vdso/gettimeofday.h    |    6 -
 arch/x86/include/asm/vdso/vsyscall.h        |   15 ----
 arch/x86/include/asm/vgtod.h                |    6 -
 arch/x86/kernel/kvmclock.c                  |    9 ++
 arch/x86/kernel/pvclock.c                   |    2 
 arch/x86/kernel/time.c                      |   12 ---
 arch/x86/kernel/tsc.c                       |   32 +++++---
 arch/x86/kvm/trace.h                        |    4 -
 arch/x86/kvm/x86.c                          |   22 +++---
 arch/x86/xen/time.c                         |   36 ++++++---
 b/arch/mips/include/asm/vdso/gettimeofday.h |   29 +++----
 b/include/asm-generic/vdso/vsyscall.h       |   14 ---
 drivers/clocksource/arm_arch_timer.c        |    8 +-
 drivers/clocksource/hyperv_timer.c          |    7 +
 drivers/clocksource/mips-gic-timer.c        |    8 +-
 include/linux/clocksource.h                 |  102 ++++++++++++++++------------
 include/vdso/datapage.h                     |    2 
 kernel/time/clocksource.c                   |    9 ++
 kernel/time/namespace.c                     |    7 +
 kernel/time/vsyscall.c                      |   43 +++++------
 lib/vdso/gettimeofday.c                     |   43 +++++++----
 36 files changed, 259 insertions(+), 285 deletions(-)


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ