On Tue, Nov 22, 2016 at 6:28 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote: > The newly added check for RO_AFTER_INIT_DATA in kmemleak breaks ARM whenever > XIP_KERNEL is enabled: > > mm/kmemleak.o: In function `kmemleak_scan': > kmemleak.c:(.text.kmemleak_scan+0x2e4): undefined reference to `__end_data_ro_after_init' > kmemleak.c:(.text.kmemleak_scan+0x2e8): undefined reference to `__start_data_ro_after_init' > > This adds the start/end symbols for the section even in the case of having > no data in the section, to make the check work while keeping the architecture > specific override in one place. > > Fixes: d7c19b066dcf ("mm: kmemleak: scan .data.ro_after_init") > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> Acked-by: Kees Cook <keescook@xxxxxxxxxxxx> -Kees > --- > The patch causing this was merged late into v4.9-rc, this one should > probably go there as well. > > I assume the same problem exists on s390, but I have not checked that. > --- > arch/arm/kernel/vmlinux-xip.lds.S | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/kernel/vmlinux-xip.lds.S b/arch/arm/kernel/vmlinux-xip.lds.S > index 06c178214629..bf900f5421a1 100644 > --- a/arch/arm/kernel/vmlinux-xip.lds.S > +++ b/arch/arm/kernel/vmlinux-xip.lds.S > @@ -3,8 +3,11 @@ > * Written by Martin Mares <mj@xxxxxxxxxxxxxxxxxxxxxxxx> > */ > > -/* No __ro_after_init data in the .rodata section - which will always be ro */ > -#define RO_AFTER_INIT_DATA > +/* empty __ro_after_init data in the .rodata section - it will always be ro */ > +#define RO_AFTER_INIT_DATA \ > + __start_data_ro_after_init = .; \ > + __end_data_ro_after_init = .; > + > > #include <asm-generic/vmlinux.lds.h> > #include <asm/cache.h> > -- > 2.9.0 > -- Kees Cook Nexus Security -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html