[SRU][Trusty][PULL] Update to upstream's implementation of Spectre v1 mitigation (LP: #1774181)

Juerg Haefliger juerg.haefliger at canonical.com
Mon Jul 23 14:06:17 UTC 2018


ping.

On 06/28/2018 04:40 PM, Juerg Haefliger wrote:
> BugLink: https://bugs.launchpad.net/bugs/1774181
> 
> Xenial/Trusty/Precise are currently lacking full support of upstream's Spectre
> v1 mitigation. Add the missing patches and merge them with Ubuntu's current
> implementation.
> 
> == SRU Justification ==
> Ubuntu's Spectre v1 mitigation is based on the original embargoed patchset
> which introduced a barrier macro to prevent speculation beyond array boundaries
> for user controlled indices. What eventually landed in upstream is slightly
> different and uses a barrier macro in combination with a masking solution (plus
> syscall table and user pointer sanitation). During the updates to newer stable
> upstream versions, all those patches were skipped. After reviewing them, we
> want to bring them back and merge them with the current implementation which
> brings us back in sync with upstream stable.
> 
> == Fix ==
> Add all the missing Spectre v1 patches from upstream stable 4.4.118 to 4.4.131.
> Where appropriate, replace Ubuntu's additional barriers with the masking macro.
> 
> == Regression Potential ==
> Low. The patches have been in upstream for quite a while now and we keep the
> speculation barriers that are currently in Ubuntu but not in upstream.
> 
> == Test Case ==
> TBD.
> 
> Compile-tested all supported architectures.
> 
> Signed-off-by: Juerg Haefliger <juergh at canonical.com>
> ---
> 
> The following changes since commit ae41eb7e6e1f4431c8a6d98578588d15b7240bf8:
> 
>   fscache: Fix hanging wait on page discarded by writeback (2018-06-18 17:44:37 +0200)
> 
> are available in the Git repository at:
> 
>   git://git.launchpad.net/~juergh/+git/trusty-linux lp1774181
> 
> for you to fetch changes up to 182dabb3ee807633a0a11e8bbac93a64d111fdd3:
> 
>   UBUNTU: SAUCE: filter: Use barrier_nospec() instead of osb() (2018-06-28 16:08:50 +0200)
> 
> ----------------------------------------------------------------
> Ben Hutchings (1):
>       x86/syscall: Sanitize syscall table de-references under speculation
> 
> Dan Williams (9):
>       array_index_nospec: Sanitize speculative array de-references
>       x86: Implement array_index_mask_nospec
>       x86: Introduce barrier_nospec
>       x86/get_user: Use pointer masking to limit speculation
>       vfs, fdtable: Prevent bounds-check bypass via speculative execution
>       nl80211: Sanitize array index in parse_txq_params
>       x86/spectre: Report get_user mitigation for spectre_v1
>       x86/kvm: Update spectre-v1 mitigation
>       nospec: Kill array_index_nospec_mask_check()
> 
> Juerg Haefliger (3):
>       UBUNTU: SAUCE: Replace osb() calls with array_index_nospec()
>       UBUNTU: SAUCE: Rename osb() to barrier_nospec()
>       UBUNTU: SAUCE: filter: Use barrier_nospec() instead of osb()
> 
> Mark Rutland (1):
>       Documentation: Document array_index_nospec
> 
> Rasmus Villemoes (1):
>       nospec: Allow index argument to have const-qualified type
> 
> Will Deacon (1):
>       nospec: Move array_index_nospec() parameter checking into separate macro
> 
>  Documentation/speculation.txt            | 90 ++++++++++++++++++++++++++++++++
>  arch/arm/include/asm/barrier.h           |  3 --
>  arch/arm64/include/asm/barrier.h         |  3 --
>  arch/powerpc/include/asm/barrier.h       |  3 +-
>  arch/s390/include/asm/barrier.h          | 13 +++--
>  arch/x86/ia32/ia32entry.S                | 36 ++++++++-----
>  arch/x86/include/asm/barrier.h           | 32 ++++++++++--
>  arch/x86/kernel/cpu/bugs.c               | 10 +---
>  arch/x86/kernel/entry_32.S               |  4 ++
>  arch/x86/kernel/entry_64.S               | 16 +++---
>  arch/x86/kvm/vmx.c                       | 15 ++++--
>  arch/x86/lib/getuser.S                   | 10 ++++
>  drivers/media/usb/uvc/uvc_v4l2.c         |  5 +-
>  drivers/net/wireless/ath/carl9170/main.c |  3 +-
>  drivers/scsi/qla2xxx/qla_mr.c            |  5 +-
>  fs/udf/misc.c                            | 13 ++---
>  include/asm-generic/barrier.h            | 11 ----
>  include/linux/fdtable.h                  |  3 +-
>  include/linux/nospec.h                   | 53 +++++++++++++++++++
>  kernel/user_namespace.c                  |  3 +-
>  net/core/filter.c                        |  5 +-
>  net/wireless/nl80211.c                   |  9 ++--
>  22 files changed, 268 insertions(+), 77 deletions(-)
>  create mode 100644 Documentation/speculation.txt
> 


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


More information about the kernel-team mailing list