Web lists-archives.com

Re: [PATCH 4.14 093/105] arm64: drop linker script hack to hide __efistub_ symbols




On Fri, Jan 11, 2019 at 6:34 AM Greg Kroah-Hartman
<gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> 4.14-stable review patch.  If anyone has any objections, please let me know.
>
> ------------------
>
> From: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
>
> commit dd6846d774693bfa27d7db4dae5ea67dfe373fa1 upstream.
>
> Commit 1212f7a16af4 ("scripts/kallsyms: filter arm64's __efistub_
> symbols") updated the kallsyms code to filter out symbols with
> the __efistub_ prefix explicitly, so we no longer require the
> hack in our linker script to emit them as absolute symbols.

!!!
Sorry, I think we should pick 1212f7a16af4 ("scripts/kallsyms: filter
arm64's __efistub_ symbols") for 4.14 to go with this patch.

My usual gitfu to see the first tag that contained a commit `git
describe --contains "$tag" | sed 's/~.*//'` says next-20180319 which
isn't something I recognize or would have expected.  I see the changed
code in 4.19.y LTS but not 4.14.y LTS.

>
> Cc: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
> Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
> [ND: adjusted for context]
> Signed-off-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> ---
>  arch/arm64/kernel/image.h |   44 +++++++++++++++++---------------------------
>  1 file changed, 17 insertions(+), 27 deletions(-)
>
> --- a/arch/arm64/kernel/image.h
> +++ b/arch/arm64/kernel/image.h
> @@ -76,16 +76,6 @@
>  __efistub_stext_offset = stext - _text;
>
>  /*
> - * Prevent the symbol aliases below from being emitted into the kallsyms
> - * table, by forcing them to be absolute symbols (which are conveniently
> - * ignored by scripts/kallsyms) rather than section relative symbols.
> - * The distinction is only relevant for partial linking, and only for symbols
> - * that are defined within a section declaration (which is not the case for
> - * the definitions below) so the resulting values will be identical.
> - */
> -#define KALLSYMS_HIDE(sym)     ABSOLUTE(sym)
> -
> -/*
>   * The EFI stub has its own symbol namespace prefixed by __efistub_, to
>   * isolate it from the kernel proper. The following symbols are legally
>   * accessed by the stub, so provide some aliases to make them accessible.
> @@ -94,27 +84,27 @@ __efistub_stext_offset = stext - _text;
>   * linked at. The routines below are all implemented in assembler in a
>   * position independent manner
>   */
> -__efistub_memcmp               = KALLSYMS_HIDE(__pi_memcmp);
> -__efistub_memchr               = KALLSYMS_HIDE(__pi_memchr);
> -__efistub_memcpy               = KALLSYMS_HIDE(__pi_memcpy);
> -__efistub_memmove              = KALLSYMS_HIDE(__pi_memmove);
> -__efistub_memset               = KALLSYMS_HIDE(__pi_memset);
> -__efistub_strlen               = KALLSYMS_HIDE(__pi_strlen);
> -__efistub_strnlen              = KALLSYMS_HIDE(__pi_strnlen);
> -__efistub_strcmp               = KALLSYMS_HIDE(__pi_strcmp);
> -__efistub_strncmp              = KALLSYMS_HIDE(__pi_strncmp);
> -__efistub___flush_dcache_area  = KALLSYMS_HIDE(__pi___flush_dcache_area);
> +__efistub_memcmp               = __pi_memcmp;
> +__efistub_memchr               = __pi_memchr;
> +__efistub_memcpy               = __pi_memcpy;
> +__efistub_memmove              = __pi_memmove;
> +__efistub_memset               = __pi_memset;
> +__efistub_strlen               = __pi_strlen;
> +__efistub_strnlen              = __pi_strnlen;
> +__efistub_strcmp               = __pi_strcmp;
> +__efistub_strncmp              = __pi_strncmp;
> +__efistub___flush_dcache_area  = __pi___flush_dcache_area;
>
>  #ifdef CONFIG_KASAN
> -__efistub___memcpy             = KALLSYMS_HIDE(__pi_memcpy);
> -__efistub___memmove            = KALLSYMS_HIDE(__pi_memmove);
> -__efistub___memset             = KALLSYMS_HIDE(__pi_memset);
> +__efistub___memcpy             = __pi_memcpy;
> +__efistub___memmove            = __pi_memmove;
> +__efistub___memset             = __pi_memset;
>  #endif
>
> -__efistub__text                        = KALLSYMS_HIDE(_text);
> -__efistub__end                 = KALLSYMS_HIDE(_end);
> -__efistub__edata               = KALLSYMS_HIDE(_edata);
> -__efistub_screen_info          = KALLSYMS_HIDE(screen_info);
> +__efistub__text                        = _text;
> +__efistub__end                 = _end;
> +__efistub__edata               = _edata;
> +__efistub_screen_info          = screen_info;
>
>  #endif
>
>
>


-- 
Thanks,
~Nick Desaulniers