summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch
diff options
context:
space:
mode:
authorAndrew Geissler <geissonator@yahoo.com>2020-07-25 00:15:54 +0300
committerAndrew Geissler <geissonator@yahoo.com>2020-07-25 00:20:14 +0300
commitb7d2861976669d4f6decc55762ba83fe0371d6d5 (patch)
tree895805a16305cf31bccbf50b9baa866b232afa49 /poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch
parent5bea8d8239056487ed7ec39d7b1c319c664dcf68 (diff)
downloadopenbmc-b7d2861976669d4f6decc55762ba83fe0371d6d5.tar.xz
poky: subtree update:968fcf4989..23deb29c1b
Arthur She (1): igt-gpu-tools: Add PACKAGECONFIG for Chamelium support Bruce Ashfield (4): linux-yocto/5.4: update to v5.4.51 linux-yocto-rt/5.4: fix mmdrop stress test issues kernel-yocto: account for extracted defconfig in elements check kernel-devsrc: fix on-target module build for v5.8+ Changqing Li (2): dpkg: change SRC_URI to take dpkg from git gtk-immodules-cache.bbclass: fix post install scriptlet error Charlie Davies (1): u-boot: fix condition to allow use of *.cfg Chen Qi (1): rpm: fix nativesdk's default var location Christian Eggers (2): avahi: Fix typo in recipe util-linux: Set license for library sub packages Daniel Ammann (1): image.bbclass: improve wording when image size exceeds the specified limit Dmitry Baryshkov (1): gcc-10.1: add fix for PR 96130 Douglas (2): nativesdk: clear MACHINE_FEATURES nativesdk: Set the CXXFLAGS to the BUILDSDK_CXXFLAGS He Zhe (1): cryptodev-module: Backport a patch to fix build failure with kernel v5.8 Hongxu Jia (1): e2fsprogs: fix up check for hardlinks always false if inode > 0xFFFFFFFF Jens Rehsack (3): subversion: extend for nativesdk serf: extend for nativesdk kmod: add packageconfig for xz and ssl Joshua Watt (8): virtual/libgbm is the provider of gbm.pc diffoscope: upgrade 150 -> 151 python3-pycryptodomex: upgrade 3.9.7 -> 3.9.8 python3-pycryptodome: upgrade 3.9.7 -> 3.9.8 classes/reproducible: Move to library code lib/oe/reproducible: Fix error when no git HEAD classes/cmake: Fix host detection classes/package: Use HOST_OS for runtime dependencies Kamil Dziezyk (1): qemu: fix for virtfs configuration error in qemu 5.0.0 Kevin Hao (3): wic/filemap: Drop the unused block_is_unmapped() wic/filemap: Drop the unused get_unmapped_ranges() wic/filemap: Fall back to standard copy when no way to get the block map Khem Raj (4): go: Disbale CGO for riscv64 go-dep: Fix build on riscv64 musl: Update to latest tip site: Make sys_siglist default to no Konrad Weihmann (2): bitbake: pyshyacc: allow double COMMA statements ptest: append to FILES Kurt Kiefer (1): linux-firmware: add ibt-20 package Lee Chee Yang (1): bison: fix Argument list too long error Mingli Yu (1): python3: define a profile directory path Naveen Saini (3): libva: upgrade 2.7.1 -> 2.8.0 libva-initial: upgrade 2.7.1 -> 2.8.0 libva-utils: upgrade 2.7.1 -> 2.8.0 Oleksandr (1): expat: Added ptest Pierre-Jean Texier (1): u-boot: upgrade 2020.04 -> 2020.07 Rasmus Villemoes (1): cml1: Move find_cfgs() helper to cml1.bbclass Ricardo Salveti (1): sudo: set with-rundir to /run/sudo Richard Purdie (34): bitbake: fetch2: Change git fetcher not to destroy old references oeqa/selftest/sstatetests: Avoid polluting DL_DIR bitbake: server/process: Fix a rare lockfile race qemurunner: Ensure pid location is deterministic qemurunner: Add extra debug info when qemu fails to start bitbake: server/process: Ensure UI-less servers don't sit in infinite loops oeqa/utils/qemurunner: Fix missing pid file tracebacks mpfr: upgrade 4.0.2 -> 4.1.0 libuv: upgrade 1.38.0 -> 1.38.1 btrfs-tools: upgrade 5.6.1 -> 5.7 init-system-helpers: upgrade 1.57 -> 1.58 createrepo-c: upgrade 0.15.11 -> 0.16.0 mtd-utils: upgrade 2.1.1 -> 2.1.2 dpkg: upgrade 1.20.0 -> 1.20.5 python3-cython: upgrade 0.29.20 -> 0.29.21 python3-git: upgrade 3.1.3 -> 3.1.7 asciidoc: upgrade 9.0.0 -> 9.0.1 libnsl2: upgrade 1.2.0 -> 1.3.0 rpcsvc-proto: upgrade 1.4.1 -> 1.4.2 stress-ng: upgrade 0.11.14 -> 0.11.15 epiphany: upgrade 3.36.2 -> 3.36.3 ffmpeg: upgrade 4.3 -> 4.3.1 gnupg: upgrade 2.2.20 -> 2.2.21 mpg123: upgrade 1.26.1 -> 1.26.2 libevent: upgrade 2.1.11 -> 2.1.12 webkitgtk: upgrade 2.28.2 -> 2.28.3 libgcrypt: upgrade 1.8.5 -> 1.8.6 bitbake: server/process: Fix note reference -> info bitbake: cooker: Fix unmatched files handling leading to misleading warnings bitbake: build: Allow deltask to take multiple tasknames pseudo: Update to add OFC fcntl lock updates oeqa/qemurunner: Add priority/nice information for running processes bitbake: cooker: Improve multiconfig configuration error reporting bitbake: cooker: Handle multiconfig name mappings correctly Robert Yang (1): openssl: openssl-bin requires openssl-conf to run Ross Burton (9): insane: consolidate skipping of temporary do_package files perf: add PACKAGECONFIG for CoreSight support autotools: don't special-case help2man-native for dependencies flex: fix build with autoconf 2.70 nasm: fix build with autoconf 2.70 init-ifupdown: always make machine-specific insane: improve arch test messages startup-notification: add time_t type mismatch patch from upstream gcc: mitigate the Straight-line Speculation attack Sakib Sajal (5): qemu: fix CVE-2020-13362 qemu: fix CVE-2020-13659 qemu: fix CVE-2020-13800 qemu: fix CVE-2020-13791 busybox: make hwclock compatible with glibc 2.31 Tanu Kaskinen (2): alsa-lib: upgrade 1.2.3.1 -> 1.2.3.2 pulseaudio: improve the Thumb frame pointer fix Taras Kondratiuk (1): nfs-utils: use rpcgen tool from HOSTTOOLS_DIR Tim Orling (2): lib/oe/recipeutils.py: add AUTHOR; BBCLASSEXTEND scripts/lib/recipetool/create.py: fix regex strings Wang Mingyu (4): dbus: upgrade 1.12.18 -> 1.12.20 fribidi: upgrade 1.0.9 -> 1.0.10 glib-2.0: upgrade 2.64.3 -> 2.64.4 libvorbis: upgrade 1.3.6 -> 1.3.7 Yi Zhao (1): bind: upgrade 9.11.19 -> 9.11.21 Yongxin Liu (2): linux-firmware: fix the wrong file path for ibt-misc linux-firmware: move ibt-misc to the end of ibt packages akuster (3): cve-check.bbclass: always save cve report ref-system-requirements: update supported hosts lists glibc: whitelist CVE-2010-10029 zhengruoqin (1): gnutls: Fix krb5 code license to GPLv2.1+ to match the LICENSE file. Signed-off-by: Andrew Geissler <geissonator@yahoo.com> Change-Id: Iae9b13b7fe09bb3c0ab953a063793c95e8b17468
Diffstat (limited to 'poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch')
-rw-r--r--poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch202
1 files changed, 202 insertions, 0 deletions
diff --git a/poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch b/poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch
new file mode 100644
index 000000000..73de4c759
--- /dev/null
+++ b/poky/meta/recipes-devtools/gcc/gcc-10.1/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch
@@ -0,0 +1,202 @@
+CVE: CVE-2020-13844
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 1ff243934ac443b5f58cd02a5012ce58ecc31fb2 Mon Sep 17 00:00:00 2001
+From: Matthew Malcomson <matthew.malcomson@arm.com>
+Date: Thu, 9 Jul 2020 09:11:58 +0100
+Subject: [PATCH 1/3] aarch64: New Straight Line Speculation (SLS) mitigation
+ flags
+
+Here we introduce the flags that will be used for straight line speculation.
+
+The new flag introduced is `-mharden-sls=`.
+This flag can take arguments of `none`, `all`, or a comma seperated list of one
+or more of `retbr` or `blr`.
+`none` indicates no special mitigation of the straight line speculation
+vulnerability.
+`all` requests all mitigations currently implemented.
+`retbr` requests that the RET and BR instructions have a speculation barrier
+inserted after them.
+`blr` requests that BLR instructions are replaced by a BL to a function stub
+using a BR with a speculation barrier after it.
+
+Setting this on a per-function basis using attributes or the like is not
+enabled, but may be in the future.
+
+gcc/ChangeLog:
+
+2020-06-02 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p):
+ New.
+ (aarch64_harden_sls_blr_p): New.
+ * config/aarch64/aarch64.c (enum aarch64_sls_hardening_type):
+ New.
+ (aarch64_harden_sls_retbr_p): New.
+ (aarch64_harden_sls_blr_p): New.
+ (aarch64_validate_sls_mitigation): New.
+ (aarch64_override_options): Parse options for SLS mitigation.
+ * config/aarch64/aarch64.opt (-mharden-sls): New option.
+ * doc/invoke.texi: Document new option.
+---
+ gcc/config/aarch64/aarch64-protos.h | 3 ++
+ gcc/config/aarch64/aarch64.c | 76 +++++++++++++++++++++++++++++++++++++
+ gcc/config/aarch64/aarch64.opt | 4 ++
+ gcc/doc/invoke.texi | 12 ++++++
+ 4 files changed, 95 insertions(+)
+
+diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
+index 723d9ba..eb5f4b4 100644
+--- a/gcc/config/aarch64/aarch64-protos.h
++++ b/gcc/config/aarch64/aarch64-protos.h
+@@ -781,4 +781,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names;
+
+ tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *);
+
++extern bool aarch64_harden_sls_retbr_p (void);
++extern bool aarch64_harden_sls_blr_p (void);
++
+ #endif /* GCC_AARCH64_PROTOS_H */
+diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
+index b86434a..437a9cf 100644
+--- a/gcc/config/aarch64/aarch64.c
++++ b/gcc/config/aarch64/aarch64.c
+@@ -14494,6 +14494,79 @@ aarch64_validate_mcpu (const char *str, const struct processor **res,
+ return false;
+ }
+
++/* Straight line speculation indicators. */
++enum aarch64_sls_hardening_type
++{
++ SLS_NONE = 0,
++ SLS_RETBR = 1,
++ SLS_BLR = 2,
++ SLS_ALL = 3,
++};
++static enum aarch64_sls_hardening_type aarch64_sls_hardening;
++
++/* Return whether we should mitigatate Straight Line Speculation for the RET
++ and BR instructions. */
++bool
++aarch64_harden_sls_retbr_p (void)
++{
++ return aarch64_sls_hardening & SLS_RETBR;
++}
++
++/* Return whether we should mitigatate Straight Line Speculation for the BLR
++ instruction. */
++bool
++aarch64_harden_sls_blr_p (void)
++{
++ return aarch64_sls_hardening & SLS_BLR;
++}
++
++/* As of yet we only allow setting these options globally, in the future we may
++ allow setting them per function. */
++static void
++aarch64_validate_sls_mitigation (const char *const_str)
++{
++ char *token_save = NULL;
++ char *str = NULL;
++
++ if (strcmp (const_str, "none") == 0)
++ {
++ aarch64_sls_hardening = SLS_NONE;
++ return;
++ }
++ if (strcmp (const_str, "all") == 0)
++ {
++ aarch64_sls_hardening = SLS_ALL;
++ return;
++ }
++
++ char *str_root = xstrdup (const_str);
++ str = strtok_r (str_root, ",", &token_save);
++ if (!str)
++ error ("invalid argument given to %<-mharden-sls=%>");
++
++ int temp = SLS_NONE;
++ while (str)
++ {
++ if (strcmp (str, "blr") == 0)
++ temp |= SLS_BLR;
++ else if (strcmp (str, "retbr") == 0)
++ temp |= SLS_RETBR;
++ else if (strcmp (str, "none") == 0 || strcmp (str, "all") == 0)
++ {
++ error ("%<%s%> must be by itself for %<-mharden-sls=%>", str);
++ break;
++ }
++ else
++ {
++ error ("invalid argument %<%s%> for %<-mharden-sls=%>", str);
++ break;
++ }
++ str = strtok_r (NULL, ",", &token_save);
++ }
++ aarch64_sls_hardening = (aarch64_sls_hardening_type) temp;
++ free (str_root);
++}
++
+ /* Parses CONST_STR for branch protection features specified in
+ aarch64_branch_protect_types, and set any global variables required. Returns
+ the parsing result and assigns LAST_STR to the last processed token from
+@@ -14738,6 +14811,9 @@ aarch64_override_options (void)
+ selected_arch = NULL;
+ selected_tune = NULL;
+
++ if (aarch64_harden_sls_string)
++ aarch64_validate_sls_mitigation (aarch64_harden_sls_string);
++
+ if (aarch64_branch_protection_string)
+ aarch64_validate_mbranch_protection (aarch64_branch_protection_string);
+
+diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
+index d99d14c..5170361 100644
+--- a/gcc/config/aarch64/aarch64.opt
++++ b/gcc/config/aarch64/aarch64.opt
+@@ -71,6 +71,10 @@ mgeneral-regs-only
+ Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
+ Generate code which uses only the general registers.
+
++mharden-sls=
++Target RejectNegative Joined Var(aarch64_harden_sls_string)
++Generate code to mitigate against straight line speculation.
++
+ mfix-cortex-a53-835769
+ Target Report Var(aarch64_fix_a53_err835769) Init(2) Save
+ Workaround for ARM Cortex-A53 Erratum number 835769.
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index a2794a6..bd5b77a 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -696,6 +696,7 @@ Objective-C and Objective-C++ Dialects}.
+ -msign-return-address=@var{scope} @gol
+ -mbranch-protection=@var{none}|@var{standard}|@var{pac-ret}[+@var{leaf}
+ +@var{b-key}]|@var{bti} @gol
++-mharden-sls=@var{opts} @gol
+ -march=@var{name} -mcpu=@var{name} -mtune=@var{name} @gol
+ -moverride=@var{string} -mverbose-cost-dump @gol
+ -mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{sysreg} @gol
+@@ -17065,6 +17066,17 @@ functions. The optional argument @samp{b-key} can be used to sign the functions
+ with the B-key instead of the A-key.
+ @samp{bti} turns on branch target identification mechanism.
+
++@item -mharden-sls=@var{opts}
++@opindex mharden-sls
++Enable compiler hardening against straight line speculation (SLS).
++@var{opts} is a comma-separated list of the following options:
++@table @samp
++@item retbr
++@item blr
++@end table
++In addition, @samp{-mharden-sls=all} enables all SLS hardening while
++@samp{-mharden-sls=none} disables all SLS hardening.
++
+ @item -msve-vector-bits=@var{bits}
+ @opindex msve-vector-bits
+ Specify the number of bits in an SVE vector register. This option only has
+--
+2.7.4
+