ACK/Cmnt: [SRU][B/master-next] arm64: Spectre v4 mitigation

Stefan Bader stefan.bader at canonical.com
Thu Aug 30 10:12:04 UTC 2018


On 30.08.2018 11:26, Paolo Pisati wrote:
> BugLink: https://bugs.launchpad.net/bugs/1787993
> 
> [Impact]
> Spectre v4 mitigation (Speculative Store Bypass Disable) for arm64
> was implemented in the Arm Trusted Firmware with SMCCC v1.1 and
> SMCCC_ARCH_WORKAROUND_2[1, 2].
> 
> This patch series implements the Linux kernel side of the "Spectre-v4"
> mitigation.
> 
> [Fix]
> 
> Original fix:
> http://lkml.iu.edu/hypermail/linux/kernel/1805.2/05868.html
> 
> This patchset is a cherry pick of those patches (and prerequisistes) from the
> stable / linux-4.14.y tree, forward ported to our Bionic kernel.
> 
> [Test]
> 
> Boot a patched kernel and add on the cmdline:
> 
> ssbd=force-on
> 
> on dmesg you should see something like:
> 
> [ 0.779901] ssbd: forced from command-line
> 
> Same goes for the off case:
> 
> ssbd=force-off
> 
> [ 0.781002] ssbd: disabled from command-line
> 
> [Regression Potential]
> 
> Since it's "new code" to our Bionic kernel, there's some regression potential,
> but it was a clean pick from linux-4.14.y without almost any modification (except
> for some mechanical diff to make it apply).
> 
> 1: https://developer.arm.com/cache-speculation-vulnerability-firmware-specification
> 2: https://github.com/ARM-software/arm-trusted-firmware/pull/1392
> 
> The following changes since commit eb8e0abeb302275fe7328b10c3f6374abcb70d83:
> 
>   UBUNTU: Start new release (2018-08-28 10:09:44 -0700)
> 
> are available in the git repository at:
> 
>   git://git.launchpad.net/~p-pisati/ubuntu/+source/linux b-master-next-spectrev4
> 
> for you to fetch changes up to b943fd8c926a0e64dd1d498216c0844f102126d1:
> 
>   UBUNTU: [Config] ARM64_SSBD=y (2018-08-30 10:33:58 +0200)
> 
> ----------------------------------------------------------------
> Christoffer Dall (1):
>       KVM: arm64: Avoid storing the vcpu pointer on the stack
> 
> Marc Zyngier (16):
>       arm64: alternatives: Add dynamic patching feature
>       KVM: arm/arm64: Do not use kern_hyp_va() with kvm_vgic_global_state
>       arm/arm64: smccc: Add SMCCC-specific return codes
>       arm64: Call ARCH_WORKAROUND_2 on transitions between EL0 and EL1
>       arm64: Add per-cpu infrastructure to call ARCH_WORKAROUND_2
>       arm64: Add ARCH_WORKAROUND_2 probing
>       arm64: Add 'ssbd' command-line option
>       arm64: ssbd: Add global mitigation state accessor
>       arm64: ssbd: Skip apply_ssbd if not using dynamic mitigation
>       arm64: ssbd: Restore mitigation status on CPU resume
>       arm64: ssbd: Introduce thread flag to control userspace mitigation
>       arm64: ssbd: Add prctl interface for per-thread mitigation
>       arm64: KVM: Add HYP per-cpu accessors
>       arm64: KVM: Add ARCH_WORKAROUND_2 support for guests
>       arm64: KVM: Handle guest's ARCH_WORKAROUND_2 requests
>       arm64: KVM: Add ARCH_WORKAROUND_2 discovery through ARCH_FEATURES_FUNC_ID
> 
> Paolo Pisati (1):
>       UBUNTU: [Config] ARM64_SSBD=y
> 
>  Documentation/admin-guide/kernel-parameters.txt |  17 +++
>  arch/arm/include/asm/kvm_host.h                 |  12 ++
>  arch/arm/include/asm/kvm_mmu.h                  |  12 ++
>  arch/arm64/Kconfig                              |   9 ++
>  arch/arm64/include/asm/alternative.h            |  41 +++++-
>  arch/arm64/include/asm/cpucaps.h                |   3 +-
>  arch/arm64/include/asm/cpufeature.h             |  22 +++
>  arch/arm64/include/asm/kvm_asm.h                |  41 ++++++
>  arch/arm64/include/asm/kvm_host.h               |  41 ++++++
>  arch/arm64/include/asm/kvm_mmu.h                |  44 ++++++
>  arch/arm64/include/asm/thread_info.h            |   1 +
>  arch/arm64/kernel/Makefile                      |   1 +
>  arch/arm64/kernel/alternative.c                 |  43 ++++--
>  arch/arm64/kernel/asm-offsets.c                 |   2 +
>  arch/arm64/kernel/cpu_errata.c                  | 180 ++++++++++++++++++++++++
>  arch/arm64/kernel/entry.S                       |  30 ++++
>  arch/arm64/kernel/hibernate.c                   |  11 ++
>  arch/arm64/kernel/ssbd.c                        | 108 ++++++++++++++
>  arch/arm64/kernel/suspend.c                     |   8 ++
>  arch/arm64/kvm/hyp/entry.S                      |   6 +-
>  arch/arm64/kvm/hyp/hyp-entry.S                  |  66 ++++++---
>  arch/arm64/kvm/hyp/switch.c                     |  43 +++++-
>  arch/arm64/kvm/hyp/sysreg-sr.c                  |   5 +
>  arch/arm64/kvm/reset.c                          |   4 +
>  debian.master/config/config.common.ubuntu       |   1 +
>  include/linux/arm-smccc.h                       |  10 ++
>  virt/kvm/arm/arm.c                              |   4 +
>  virt/kvm/arm/hyp/vgic-v2-sr.c                   |   2 +-
>  virt/kvm/arm/psci.c                             |  18 ++-
>  29 files changed, 738 insertions(+), 47 deletions(-)
>  create mode 100644 arch/arm64/kernel/ssbd.c
> 
I have not looked at the pull-request. So if not already done so, all the
patches should probably have a "CVE-2018-3639 (arm64)" line added. I believe
that was the correct number (maybe double check).

Acked-by: Stefan Bader <stefan.bader at canonical.com>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20180830/ccc5aff4/attachment.sig>


More information about the kernel-team mailing list