Skip to content
Snippets Groups Projects
Select Git revision
  • df4c0b18f2a2798f1e3ae9dcf58c024bb33e4202
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

putuser.S

Blame
    • Jiri Slaby's avatar
      98ededb6
      x86/asm: Make some functions local labels · 98ededb6
      Jiri Slaby authored
      
      Boris suggests to make a local label (prepend ".L") to these functions
      to eliminate them from the symbol table. These are functions with very
      local names and really should not be visible anywhere.
      
      Note that objtool won't see these functions anymore (to generate ORC
      debug info). But all the functions are not annotated with ENDPROC, so
      they won't have objtool's attention anyway.
      
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Cao jin <caoj.fnst@cn.fujitsu.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steve Winslow <swinslow@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Wei Huang <wei@redhat.com>
      Cc: x86-ml <x86@kernel.org>
      Cc: Xiaoyao Li <xiaoyao.li@linux.intel.com>
      Link: https://lkml.kernel.org/r/20190906075550.23435-2-jslaby@suse.cz
      98ededb6
      History
      x86/asm: Make some functions local labels
      Jiri Slaby authored
      
      Boris suggests to make a local label (prepend ".L") to these functions
      to eliminate them from the symbol table. These are functions with very
      local names and really should not be visible anywhere.
      
      Note that objtool won't see these functions anymore (to generate ORC
      debug info). But all the functions are not annotated with ENDPROC, so
      they won't have objtool's attention anyway.
      
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Cao jin <caoj.fnst@cn.fujitsu.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steve Winslow <swinslow@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Wei Huang <wei@redhat.com>
      Cc: x86-ml <x86@kernel.org>
      Cc: Xiaoyao Li <xiaoyao.li@linux.intel.com>
      Link: https://lkml.kernel.org/r/20190906075550.23435-2-jslaby@suse.cz
    putuser.S 2.07 KiB
    /* SPDX-License-Identifier: GPL-2.0 */
    /*
     * __put_user functions.
     *
     * (C) Copyright 2005 Linus Torvalds
     * (C) Copyright 2005 Andi Kleen
     * (C) Copyright 2008 Glauber Costa
     *
     * These functions have a non-standard call interface
     * to make them more efficient, especially as they
     * return an error value in addition to the "real"
     * return value.
     */
    #include <linux/linkage.h>
    #include <asm/thread_info.h>
    #include <asm/errno.h>
    #include <asm/asm.h>
    #include <asm/smap.h>
    #include <asm/export.h>
    
    
    /*
     * __put_user_X
     *
     * Inputs:	%eax[:%edx] contains the data
     *		%ecx contains the address
     *
     * Outputs:	%eax is error code (0 or -EFAULT)
     *
     * These functions should not modify any other registers,
     * as they get called from within inline assembly.
     */
    
    #define ENTER	mov PER_CPU_VAR(current_task), %_ASM_BX
    
    .text
    ENTRY(__put_user_1)
    	ENTER
    	cmp TASK_addr_limit(%_ASM_BX),%_ASM_CX
    	jae .Lbad_put_user
    	ASM_STAC
    1:	movb %al,(%_ASM_CX)
    	xor %eax,%eax
    	ASM_CLAC
    	ret
    ENDPROC(__put_user_1)
    EXPORT_SYMBOL(__put_user_1)
    
    ENTRY(__put_user_2)
    	ENTER
    	mov TASK_addr_limit(%_ASM_BX),%_ASM_BX
    	sub $1,%_ASM_BX
    	cmp %_ASM_BX,%_ASM_CX
    	jae .Lbad_put_user
    	ASM_STAC
    2:	movw %ax,(%_ASM_CX)
    	xor %eax,%eax
    	ASM_CLAC
    	ret
    ENDPROC(__put_user_2)
    EXPORT_SYMBOL(__put_user_2)
    
    ENTRY(__put_user_4)
    	ENTER
    	mov TASK_addr_limit(%_ASM_BX),%_ASM_BX
    	sub $3,%_ASM_BX
    	cmp %_ASM_BX,%_ASM_CX
    	jae .Lbad_put_user
    	ASM_STAC
    3:	movl %eax,(%_ASM_CX)
    	xor %eax,%eax
    	ASM_CLAC
    	ret
    ENDPROC(__put_user_4)
    EXPORT_SYMBOL(__put_user_4)
    
    ENTRY(__put_user_8)
    	ENTER
    	mov TASK_addr_limit(%_ASM_BX),%_ASM_BX
    	sub $7,%_ASM_BX
    	cmp %_ASM_BX,%_ASM_CX
    	jae .Lbad_put_user
    	ASM_STAC
    4:	mov %_ASM_AX,(%_ASM_CX)
    #ifdef CONFIG_X86_32
    5:	movl %edx,4(%_ASM_CX)
    #endif
    	xor %eax,%eax
    	ASM_CLAC
    	RET
    ENDPROC(__put_user_8)
    EXPORT_SYMBOL(__put_user_8)
    
    .Lbad_put_user_clac:
    	ASM_CLAC
    .Lbad_put_user:
    	movl $-EFAULT,%eax
    	RET
    
    	_ASM_EXTABLE_UA(1b, .Lbad_put_user_clac)
    	_ASM_EXTABLE_UA(2b, .Lbad_put_user_clac)
    	_ASM_EXTABLE_UA(3b, .Lbad_put_user_clac)
    	_ASM_EXTABLE_UA(4b, .Lbad_put_user_clac)
    #ifdef CONFIG_X86_32
    	_ASM_EXTABLE_UA(5b, .Lbad_put_user_clac)
    #endif