Commit 5516c89d authored by Nadav Amit's avatar Nadav Amit Committed by Borislav Petkov (AMD)

x86/lib: Make get/put_user() exception handling a visible symbol

The .L-prefixed exception handling symbols of get_user() and put_user()
do get discarded from the symbol table of the final kernel image.

This confuses tools which parse that symbol table and try to map the
chunk of code to a symbol. And, in general, from toolchain perspective,
it is a good practice to have all code belong to a symbol, and the
correct one at that.

  ( Currently, objdump displays that exception handling chunk as part
    of the previous symbol which is a "fallback" of sorts and not
    correct. )

While at it, rename them to something more descriptive.

  [ bp: Rewrite commit message, rename symbols. ]
Signed-off-by: default avatarNadav Amit <namit@vmware.com>
Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20230525184244.2311-1-namit@vmware.com
parent 2fe1e67e
...@@ -143,43 +143,43 @@ SYM_FUNC_END(__get_user_nocheck_8) ...@@ -143,43 +143,43 @@ SYM_FUNC_END(__get_user_nocheck_8)
EXPORT_SYMBOL(__get_user_nocheck_8) EXPORT_SYMBOL(__get_user_nocheck_8)
SYM_CODE_START_LOCAL(.Lbad_get_user_clac) SYM_CODE_START_LOCAL(__get_user_handle_exception)
ASM_CLAC ASM_CLAC
.Lbad_get_user: .Lbad_get_user:
xor %edx,%edx xor %edx,%edx
mov $(-EFAULT),%_ASM_AX mov $(-EFAULT),%_ASM_AX
RET RET
SYM_CODE_END(.Lbad_get_user_clac) SYM_CODE_END(__get_user_handle_exception)
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
SYM_CODE_START_LOCAL(.Lbad_get_user_8_clac) SYM_CODE_START_LOCAL(__get_user_8_handle_exception)
ASM_CLAC ASM_CLAC
bad_get_user_8: bad_get_user_8:
xor %edx,%edx xor %edx,%edx
xor %ecx,%ecx xor %ecx,%ecx
mov $(-EFAULT),%_ASM_AX mov $(-EFAULT),%_ASM_AX
RET RET
SYM_CODE_END(.Lbad_get_user_8_clac) SYM_CODE_END(__get_user_8_handle_exception)
#endif #endif
/* get_user */ /* get_user */
_ASM_EXTABLE(1b, .Lbad_get_user_clac) _ASM_EXTABLE(1b, __get_user_handle_exception)
_ASM_EXTABLE(2b, .Lbad_get_user_clac) _ASM_EXTABLE(2b, __get_user_handle_exception)
_ASM_EXTABLE(3b, .Lbad_get_user_clac) _ASM_EXTABLE(3b, __get_user_handle_exception)
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
_ASM_EXTABLE(4b, .Lbad_get_user_clac) _ASM_EXTABLE(4b, __get_user_handle_exception)
#else #else
_ASM_EXTABLE(4b, .Lbad_get_user_8_clac) _ASM_EXTABLE(4b, __get_user_8_handle_exception)
_ASM_EXTABLE(5b, .Lbad_get_user_8_clac) _ASM_EXTABLE(5b, __get_user_8_handle_exception)
#endif #endif
/* __get_user */ /* __get_user */
_ASM_EXTABLE(6b, .Lbad_get_user_clac) _ASM_EXTABLE(6b, __get_user_handle_exception)
_ASM_EXTABLE(7b, .Lbad_get_user_clac) _ASM_EXTABLE(7b, __get_user_handle_exception)
_ASM_EXTABLE(8b, .Lbad_get_user_clac) _ASM_EXTABLE(8b, __get_user_handle_exception)
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
_ASM_EXTABLE(9b, .Lbad_get_user_clac) _ASM_EXTABLE(9b, __get_user_handle_exception)
#else #else
_ASM_EXTABLE(9b, .Lbad_get_user_8_clac) _ASM_EXTABLE(9b, __get_user_8_handle_exception)
_ASM_EXTABLE(10b, .Lbad_get_user_8_clac) _ASM_EXTABLE(10b, __get_user_8_handle_exception)
#endif #endif
...@@ -131,22 +131,22 @@ SYM_FUNC_START(__put_user_nocheck_8) ...@@ -131,22 +131,22 @@ SYM_FUNC_START(__put_user_nocheck_8)
SYM_FUNC_END(__put_user_nocheck_8) SYM_FUNC_END(__put_user_nocheck_8)
EXPORT_SYMBOL(__put_user_nocheck_8) EXPORT_SYMBOL(__put_user_nocheck_8)
SYM_CODE_START_LOCAL(.Lbad_put_user_clac) SYM_CODE_START_LOCAL(__put_user_handle_exception)
ASM_CLAC ASM_CLAC
.Lbad_put_user: .Lbad_put_user:
movl $-EFAULT,%ecx movl $-EFAULT,%ecx
RET RET
SYM_CODE_END(.Lbad_put_user_clac) SYM_CODE_END(__put_user_handle_exception)
_ASM_EXTABLE(1b, .Lbad_put_user_clac) _ASM_EXTABLE(1b, __put_user_handle_exception)
_ASM_EXTABLE(2b, .Lbad_put_user_clac) _ASM_EXTABLE(2b, __put_user_handle_exception)
_ASM_EXTABLE(3b, .Lbad_put_user_clac) _ASM_EXTABLE(3b, __put_user_handle_exception)
_ASM_EXTABLE(4b, .Lbad_put_user_clac) _ASM_EXTABLE(4b, __put_user_handle_exception)
_ASM_EXTABLE(5b, .Lbad_put_user_clac) _ASM_EXTABLE(5b, __put_user_handle_exception)
_ASM_EXTABLE(6b, .Lbad_put_user_clac) _ASM_EXTABLE(6b, __put_user_handle_exception)
_ASM_EXTABLE(7b, .Lbad_put_user_clac) _ASM_EXTABLE(7b, __put_user_handle_exception)
_ASM_EXTABLE(9b, .Lbad_put_user_clac) _ASM_EXTABLE(9b, __put_user_handle_exception)
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
_ASM_EXTABLE(8b, .Lbad_put_user_clac) _ASM_EXTABLE(8b, __put_user_handle_exception)
_ASM_EXTABLE(10b, .Lbad_put_user_clac) _ASM_EXTABLE(10b, __put_user_handle_exception)
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment