Re: [PATCH] lkdtm: avoid link error on ARM

From: Kees Cook
Date: Fri Jun 17 2016 - 11:33:10 EST


On Fri, Jun 17, 2016 at 3:07 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> The lkdtm_rodata file is built so that a function in it gets linked into
> the .rodata ELF section. This works fine normally, but on 32-bit ARM
> with really large kernels, it prevents the linker from inserting a
> veneer for the call to __gnu_mcount_nc in case we are building with
> "gcc -pg":
>
> drivers/misc/built-in.o: In function `lkdtm_rodata_do_nothing':
> panel.c:(.rodata+0x1480): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o
>
> We probably never want the profiling code to be enabled for this file
> anyway, so this just removes the option here, and for the sake of
> consistency also in the lkdtm core module.
>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> Fixes: 9a49a528dcf3 ("lkdtm: add function for testing .rodata section")

Looks fine to me, thanks!

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

Greg, can you take this into your tree for -next?

Thanks!

-Kees

> ---
> drivers/misc/Makefile | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
> index 7d45ed4a1549..4a25eeaa30f9 100644
> --- a/drivers/misc/Makefile
> +++ b/drivers/misc/Makefile
> @@ -60,6 +60,8 @@ obj-$(CONFIG_PANEL) += panel.o
>
> lkdtm-$(CONFIG_LKDTM) += lkdtm_core.o
> lkdtm-$(CONFIG_LKDTM) += lkdtm_rodata_objcopy.o
> +CFLAGS_REMOVE_lkdtm_core.o += -pg
> +CFLAGS_REMOVE_lkdtm_rodata.o += -pg
>
> OBJCOPYFLAGS :=
> OBJCOPYFLAGS_lkdtm_rodata_objcopy.o := \
> --
> 2.9.0
>



--
Kees Cook
Chrome OS & Brillo Security