samples/ftrace: Mark my_tramp[12]? global

my_tramp[12]? are declared as global functions in C, but they are not
marked global in the inline assembly definition. This mismatch confuses
Clang's Control-Flow Integrity checking. Fix the definitions by adding
.globl.

Link: https://lkml.kernel.org/r/20201113183414.1446671-1-samitolvanen@google.com

Fixes: 9d907f1ae8 ("ftrace/samples: Add a sample module that implements modify_ftrace_direct()")
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Sami Tolvanen 2020-11-13 10:34:14 -08:00 committed by Steven Rostedt (VMware)
parent 8785f51a17
commit 983df5f269
3 changed files with 4 additions and 0 deletions

View File

@ -21,6 +21,7 @@ static unsigned long my_ip = (unsigned long)schedule;
asm ( asm (
" .pushsection .text, \"ax\", @progbits\n" " .pushsection .text, \"ax\", @progbits\n"
" .type my_tramp1, @function\n" " .type my_tramp1, @function\n"
" .globl my_tramp1\n"
" my_tramp1:" " my_tramp1:"
" pushq %rbp\n" " pushq %rbp\n"
" movq %rsp, %rbp\n" " movq %rsp, %rbp\n"
@ -29,6 +30,7 @@ asm (
" .size my_tramp1, .-my_tramp1\n" " .size my_tramp1, .-my_tramp1\n"
" ret\n" " ret\n"
" .type my_tramp2, @function\n" " .type my_tramp2, @function\n"
" .globl my_tramp2\n"
" my_tramp2:" " my_tramp2:"
" pushq %rbp\n" " pushq %rbp\n"
" movq %rsp, %rbp\n" " movq %rsp, %rbp\n"

View File

@ -16,6 +16,7 @@ extern void my_tramp(void *);
asm ( asm (
" .pushsection .text, \"ax\", @progbits\n" " .pushsection .text, \"ax\", @progbits\n"
" .type my_tramp, @function\n" " .type my_tramp, @function\n"
" .globl my_tramp\n"
" my_tramp:" " my_tramp:"
" pushq %rbp\n" " pushq %rbp\n"
" movq %rsp, %rbp\n" " movq %rsp, %rbp\n"

View File

@ -14,6 +14,7 @@ extern void my_tramp(void *);
asm ( asm (
" .pushsection .text, \"ax\", @progbits\n" " .pushsection .text, \"ax\", @progbits\n"
" .type my_tramp, @function\n" " .type my_tramp, @function\n"
" .globl my_tramp\n"
" my_tramp:" " my_tramp:"
" pushq %rbp\n" " pushq %rbp\n"
" movq %rsp, %rbp\n" " movq %rsp, %rbp\n"