From e8d56bd78b6ec52dedea1b63ee46ab3c75de5c8f Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Mon, 4 Oct 2021 11:33:03 +0000 Subject: [PATCH] ANDROID: module: apply special LTO treatment to .text even if CFI is disabled We currently only emit directives for handling the .text section into the module linker script if both LTO and CFI are enabled, while for other sections, we do this even if CFI is not enabled. This is inconsistent at best, but as it also interferes with the assumption in the fips140.ko module that the .text._start and .text._end input sections are placed at the very start and end of the .text section, which currently can only be relied upon if CFI is enabled. So rearrange the #ifdef so that it only covers the .text.__cfi_check input section. Note that aligning to page size is likely to be redundant in any case, given that the .text section is laid out first, and module allocations are page aligned to begin with, so making that part unconditional is unlikely to make an observeable difference in the output. Bug: 153614920 Bug: 188620248 Fixes: 6be141eb36fe ("ANDROID: crypto: fips140 - perform load time integrity check") Change-Id: I3f9ed0ae8fa8fe5693c8d2964566cbb42c101aa7 Signed-off-by: Ard Biesheuvel (cherry picked from commit 6ae8277450ae86113cf7eea8b8348e509e2cc72d) --- scripts/module.lds.S | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/module.lds.S b/scripts/module.lds.S index 1713fc5383bb..8b9dcec11d1e 100644 --- a/scripts/module.lds.S +++ b/scripts/module.lds.S @@ -56,14 +56,16 @@ SECTIONS { *(.rodata.._end) } -#ifdef CONFIG_CFI_CLANG - /* - * With CFI_CLANG, ensure __cfi_check is at the beginning of the - * .text section, and that the section is aligned to page size. - */ .text : ALIGN(PAGE_SIZE) { *(.text.._start) +#ifdef CONFIG_CFI_CLANG + /* + * With CFI_CLANG, ensure __cfi_check is at the beginning of + * the .text section, and that the section is aligned to page + * size. + */ *(.text.__cfi_check) +#endif *(.text .text.[0-9a-zA-Z_]*) __cfi_jt_start = .; *(.text..L.cfi.jumptable .text..L.cfi.jumptable.*) @@ -71,7 +73,6 @@ SECTIONS { *(.text.._end) } #endif -#endif } /* bring in arch-specific sections */