mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
  • * [tip: x86/urgent] x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S
           [not found] <20201103012358.168682-1-maskray@google.com>
           [not found] ` <20201103014602.GA3271702@ubuntu-m3-large-x86>
    @ 2020-11-04 11:57 ` tip-bot2 for Fangrui Song
      1 sibling, 0 replies; 2+ messages in thread
    From: tip-bot2 for Fangrui Song @ 2020-11-04 11:57 UTC (permalink / raw)
      To: linux-tip-commits
      Cc: Sami Tolvanen, Fangrui Song, Borislav Petkov, Nick Desaulniers,
    	Nathan Chancellor, stable, x86, LKML
    
    The following commit has been merged into the x86/urgent branch of tip:
    
    Commit-ID:     4d6ffa27b8e5116c0abb318790fd01d4e12d75e6
    Gitweb:        https://git.kernel.org/tip/4d6ffa27b8e5116c0abb318790fd01d4e12d75e6
    Author:        Fangrui Song <maskray@google.com>
    AuthorDate:    Mon, 02 Nov 2020 17:23:58 -08:00
    Committer:     Borislav Petkov <bp@suse.de>
    CommitterDate: Wed, 04 Nov 2020 12:30:20 +01:00
    
    x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S
    
    Commit
    
      393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions")
    
    added .weak directives to arch/x86/lib/mem*_64.S instead of changing the
    existing ENTRY macros to WEAK. This can lead to the assembly snippet
    
      .weak memcpy
      ...
      .globl memcpy
    
    which will produce a STB_WEAK memcpy with GNU as but STB_GLOBAL memcpy
    with LLVM's integrated assembler before LLVM 12. LLVM 12 (since
    https://reviews.llvm.org/D90108) will error on such an overridden symbol
    binding.
    
    Commit
    
      ef1e03152cb0 ("x86/asm: Make some functions local")
    
    changed ENTRY in arch/x86/lib/memcpy_64.S to SYM_FUNC_START_LOCAL, which
    was ineffective due to the preceding .weak directive.
    
    Use the appropriate SYM_FUNC_START_WEAK instead.
    
    Fixes: 393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions")
    Fixes: ef1e03152cb0 ("x86/asm: Make some functions local")
    Reported-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Fangrui Song <maskray@google.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20201103012358.168682-1-maskray@google.com
    ---
     arch/x86/lib/memcpy_64.S  | 4 +---
     arch/x86/lib/memmove_64.S | 4 +---
     arch/x86/lib/memset_64.S  | 4 +---
     3 files changed, 3 insertions(+), 9 deletions(-)
    
    diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S
    index 037faac..1e299ac 100644
    --- a/arch/x86/lib/memcpy_64.S
    +++ b/arch/x86/lib/memcpy_64.S
    @@ -16,8 +16,6 @@
      * to a jmp to memcpy_erms which does the REP; MOVSB mem copy.
      */
     
    -.weak memcpy
    -
     /*
      * memcpy - Copy a memory block.
      *
    @@ -30,7 +28,7 @@
      * rax original destination
      */
     SYM_FUNC_START_ALIAS(__memcpy)
    -SYM_FUNC_START_LOCAL(memcpy)
    +SYM_FUNC_START_WEAK(memcpy)
     	ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \
     		      "jmp memcpy_erms", X86_FEATURE_ERMS
     
    diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S
    index 7ff00ea..41902fe 100644
    --- a/arch/x86/lib/memmove_64.S
    +++ b/arch/x86/lib/memmove_64.S
    @@ -24,9 +24,7 @@
      * Output:
      * rax: dest
      */
    -.weak memmove
    -
    -SYM_FUNC_START_ALIAS(memmove)
    +SYM_FUNC_START_WEAK(memmove)
     SYM_FUNC_START(__memmove)
     
     	mov %rdi, %rax
    diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S
    index 9ff15ee..0bfd26e 100644
    --- a/arch/x86/lib/memset_64.S
    +++ b/arch/x86/lib/memset_64.S
    @@ -6,8 +6,6 @@
     #include <asm/alternative-asm.h>
     #include <asm/export.h>
     
    -.weak memset
    -
     /*
      * ISO C memset - set a memory block to a byte value. This function uses fast
      * string to get better performance than the original function. The code is
    @@ -19,7 +17,7 @@
      *
      * rax   original destination
      */
    -SYM_FUNC_START_ALIAS(memset)
    +SYM_FUNC_START_WEAK(memset)
     SYM_FUNC_START(__memset)
     	/*
     	 * Some CPUs support enhanced REP MOVSB/STOSB feature. It is recommended
    
    ^ permalink raw reply	[flat|nested] 2+ messages in thread

  • end of thread, other threads:[~2020-11-04 11:59 UTC | newest]
    
    Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <20201103012358.168682-1-maskray@google.com>
         [not found] ` <20201103014602.GA3271702@ubuntu-m3-large-x86>
    2020-11-03 22:43   ` [PATCH v2] x86_64: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S Nick Desaulniers
    2020-11-04 11:57 ` [tip: x86/urgent] x86/lib: " tip-bot2 for Fangrui Song
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox

    all inboxes | Powered by JetHome®