summaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2016-08-05 14:25:53 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-08-31 13:12:38 +0200
commitc012268b37db6b10b59dac9b7f45956cb9a8bcb2 (patch)
treeab4afbfa1b160e0192b7a946562f2c717cb73828 /drivers/misc
parent8c57cac1457f3125a5d13dc03635c0708c61bff0 (diff)
downloadop-kernel-dev-c012268b37db6b10b59dac9b7f45956cb9a8bcb2.zip
op-kernel-dev-c012268b37db6b10b59dac9b7f45956cb9a8bcb2.tar.gz
lkdtm: Mark lkdtm_rodata_do_nothing() notrace
lkdtm_rodata_do_nothing() is an empty function which is generated in order to test the non-executability of rodata. Currently if function tracing is enabled then an mcount callsite will be generated for lkdtm_rodata_do_nothing(), and it will appear in the list of available functions for function tracing (available_filter_functions). Given it's purpose purely as a test function, it seems preferable for lkdtm_rodata_do_nothing() to be marked notrace, so it doesn't appear as traceable. This also avoids triggering a linker bug on powerpc: https://sourceware.org/bugzilla/show_bug.cgi?id=20428 When the linker sees code that needs to generate a call stub, eg. a branch to mcount(), it assumes the section is executable and dereferences a NULL pointer leading to a linker segfault. Marking lkdtm_rodata_do_nothing() notrace avoids triggering the bug because the function contains no other function calls. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/lkdtm_rodata.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/misc/lkdtm_rodata.c b/drivers/misc/lkdtm_rodata.c
index 166b1db..3564477 100644
--- a/drivers/misc/lkdtm_rodata.c
+++ b/drivers/misc/lkdtm_rodata.c
@@ -4,7 +4,7 @@
*/
#include "lkdtm.h"
-void lkdtm_rodata_do_nothing(void)
+void notrace lkdtm_rodata_do_nothing(void)
{
/* Does nothing. We just want an architecture agnostic "return". */
}
OpenPOWER on IntegriCloud