samples/ftrace: Mark my_tramp[12]? global
authorSami Tolvanen <samitolvanen@google.com>
Fri, 13 Nov 2020 18:34:14 +0000 (10:34 -0800)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 1 Dec 2020 02:42:48 +0000 (21:42 -0500)
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: 9d907f1ae80b8 ("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>
samples/ftrace/ftrace-direct-modify.c
samples/ftrace/ftrace-direct-too.c
samples/ftrace/ftrace-direct.c

index c13a5bc..5b9a099 100644 (file)
@@ -21,6 +21,7 @@ static unsigned long my_ip = (unsigned long)schedule;
 asm (
 "      .pushsection    .text, \"ax\", @progbits\n"
 "      .type           my_tramp1, @function\n"
+"      .globl          my_tramp1\n"
 "   my_tramp1:"
 "      pushq %rbp\n"
 "      movq %rsp, %rbp\n"
@@ -29,6 +30,7 @@ asm (
 "      .size           my_tramp1, .-my_tramp1\n"
 "      ret\n"
 "      .type           my_tramp2, @function\n"
+"      .globl          my_tramp2\n"
 "   my_tramp2:"
 "      pushq %rbp\n"
 "      movq %rsp, %rbp\n"
index d5c5022..3f0079c 100644 (file)
@@ -16,6 +16,7 @@ extern void my_tramp(void *);
 asm (
 "      .pushsection    .text, \"ax\", @progbits\n"
 "      .type           my_tramp, @function\n"
+"      .globl          my_tramp\n"
 "   my_tramp:"
 "      pushq %rbp\n"
 "      movq %rsp, %rbp\n"
index 63ca06d..a2729d1 100644 (file)
@@ -14,6 +14,7 @@ extern void my_tramp(void *);
 asm (
 "      .pushsection    .text, \"ax\", @progbits\n"
 "      .type           my_tramp, @function\n"
+"      .globl          my_tramp\n"
 "   my_tramp:"
 "      pushq %rbp\n"
 "      movq %rsp, %rbp\n"