summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-02-08 15:34:21 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-02-09 17:31:50 -0800
commitececdc021ba8f48ce87f476dd412e2ed50f9cd8e (patch)
tree3c649f26ef282f62c9051983b9c93f87632aa7d1 /drivers
parentc074abe02e5e3479b2dfd109fa2620d22d351c34 (diff)
downloadlinux-ececdc021ba8f48ce87f476dd412e2ed50f9cd8e.tar.bz2
lkdtm: mark execute_location as noinline
The kernel sometimes fails to link when lkdrm is built-in and compiled with clang: relocation truncated to fit: R_ARM_THM_CALL against `.bss' The reason here is that a relocation from .text to .bss fails to generate a trampoline because .bss is not an executable section. Marking the function 'noinline' turns the relative branch to .bss into an absolute branch to the function argument, and that works fine. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/misc/lkdtm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c
index 11fdadc68e53..5c1351b19029 100644
--- a/drivers/misc/lkdtm.c
+++ b/drivers/misc/lkdtm.c
@@ -335,7 +335,7 @@ static noinline void corrupt_stack(void)
memset((void *)data, 0, 64);
}
-static void execute_location(void *dst)
+static void noinline execute_location(void *dst)
{
void (*func)(void) = dst;