From: Greg Kroah-Hartman Date: Sun, 22 Jan 2023 14:24:19 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.14.304~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1eed10e0c886aa71a13260f1be39f66b0c910879;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: arch-fix-broken-buildid-for-arm64-and-riscv.patch x86-fpu-use-_alignof-to-avoid-undefined-behavior-in-type_align.patch --- diff --git a/queue-5.4/arch-fix-broken-buildid-for-arm64-and-riscv.patch b/queue-5.4/arch-fix-broken-buildid-for-arm64-and-riscv.patch new file mode 100644 index 00000000000..593f1d4d0b9 --- /dev/null +++ b/queue-5.4/arch-fix-broken-buildid-for-arm64-and-riscv.patch @@ -0,0 +1,56 @@ +From 99cb0d917ffa1ab628bb67364ca9b162c07699b1 Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Tue, 27 Dec 2022 03:45:37 +0900 +Subject: arch: fix broken BuildID for arm64 and riscv + +From: Masahiro Yamada + +commit 99cb0d917ffa1ab628bb67364ca9b162c07699b1 upstream. + +Dennis Gilmore reports that the BuildID is missing in the arm64 vmlinux +since commit 994b7ac1697b ("arm64: remove special treatment for the +link order of head.o"). + +The issue is that the type of .notes section, which contains the BuildID, +changed from NOTES to PROGBITS. + +Ard Biesheuvel figured out that whichever object gets linked first gets +to decide the type of a section. The PROGBITS type is the result of the +compiler emitting .note.GNU-stack as PROGBITS rather than NOTE. + +While Ard provided a fix for arm64, I want to fix this globally because +the same issue is happening on riscv since commit 2348e6bf4421 ("riscv: +remove special treatment for the link order of head.o"). This problem +will happen in general for other architectures if they start to drop +unneeded entries from scripts/head-object-list.txt. + +Discard .note.GNU-stack in include/asm-generic/vmlinux.lds.h. + +Link: https://lore.kernel.org/lkml/CAABkxwuQoz1CTbyb57n0ZX65eSYiTonFCU8-LCQc=74D=xE=rA@mail.gmail.com/ +Fixes: 994b7ac1697b ("arm64: remove special treatment for the link order of head.o") +Fixes: 2348e6bf4421 ("riscv: remove special treatment for the link order of head.o") +Cc: Tom Saeger +Reported-by: Dennis Gilmore +Suggested-by: Ard Biesheuvel +Signed-off-by: Masahiro Yamada +Acked-by: Palmer Dabbelt +Signed-off-by: Greg Kroah-Hartman +--- + include/asm-generic/vmlinux.lds.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/include/asm-generic/vmlinux.lds.h ++++ b/include/asm-generic/vmlinux.lds.h +@@ -825,7 +825,12 @@ + #define TRACEDATA + #endif + ++/* ++ * Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler. ++ * Otherwise, the type of .notes section would become PROGBITS instead of NOTES. ++ */ + #define NOTES \ ++ /DISCARD/ : { *(.note.GNU-stack) } \ + .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \ + __start_notes = .; \ + KEEP(*(.note.*)) \ diff --git a/queue-5.4/series b/queue-5.4/series index cbac66a18a8..0589903fb13 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -47,3 +47,5 @@ gsmi-fix-null-deref-in-gsmi_get_variable.patch drm-i915-re-disable-rc6p-on-sandy-bridge.patch drm-amd-display-fix-set-scaling-doesn-s-work.patch drm-amd-display-fix-color_space_ycbcr2020_type-matrix.patch +x86-fpu-use-_alignof-to-avoid-undefined-behavior-in-type_align.patch +arch-fix-broken-buildid-for-arm64-and-riscv.patch diff --git a/queue-5.4/x86-fpu-use-_alignof-to-avoid-undefined-behavior-in-type_align.patch b/queue-5.4/x86-fpu-use-_alignof-to-avoid-undefined-behavior-in-type_align.patch new file mode 100644 index 00000000000..ca9a46f480e --- /dev/null +++ b/queue-5.4/x86-fpu-use-_alignof-to-avoid-undefined-behavior-in-type_align.patch @@ -0,0 +1,63 @@ +From b405368325499077828cedf8c6a49bfcca748940 Mon Sep 17 00:00:00 2001 +From: YingChi Long +Date: Fri, 18 Nov 2022 08:55:35 +0800 +Subject: x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN + +From: YingChi Long + +commit 55228db2697c09abddcb9487c3d9fa5854a932cd upstream. + +WG14 N2350 specifies that it is an undefined behavior to have type +definitions within offsetof", see + + https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm + +This specification is also part of C23. + +Therefore, replace the TYPE_ALIGN macro with the _Alignof builtin to +avoid undefined behavior. (_Alignof itself is C11 and the kernel is +built with -gnu11). + +ISO C11 _Alignof is subtly different from the GNU C extension +__alignof__. Latter is the preferred alignment and _Alignof the +minimal alignment. For long long on x86 these are 8 and 4 +respectively. + +The macro TYPE_ALIGN's behavior matches _Alignof rather than +__alignof__. + + [ bp: Massage commit message. ] + +Signed-off-by: YingChi Long +Signed-off-by: Borislav Petkov +Reviewed-by: Nick Desaulniers +Link: https://lore.kernel.org/r/20220925153151.2467884-1-me@inclyc.cn +Signed-off-by: Nathan Chancellor +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/fpu/init.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +--- a/arch/x86/kernel/fpu/init.c ++++ b/arch/x86/kernel/fpu/init.c +@@ -139,9 +139,6 @@ static void __init fpu__init_system_gene + unsigned int fpu_kernel_xstate_size; + EXPORT_SYMBOL_GPL(fpu_kernel_xstate_size); + +-/* Get alignment of the TYPE. */ +-#define TYPE_ALIGN(TYPE) offsetof(struct { char x; TYPE test; }, test) +- + /* + * Enforce that 'MEMBER' is the last field of 'TYPE'. + * +@@ -149,8 +146,8 @@ EXPORT_SYMBOL_GPL(fpu_kernel_xstate_size + * because that's how C aligns structs. + */ + #define CHECK_MEMBER_AT_END_OF(TYPE, MEMBER) \ +- BUILD_BUG_ON(sizeof(TYPE) != ALIGN(offsetofend(TYPE, MEMBER), \ +- TYPE_ALIGN(TYPE))) ++ BUILD_BUG_ON(sizeof(TYPE) != \ ++ ALIGN(offsetofend(TYPE, MEMBER), _Alignof(TYPE))) + + /* + * We append the 'struct fpu' to the task_struct: