• Vincenzo Frascino's avatar
    ARM: 8952/1: Disable kmemleak on XIP kernels · c0deae0a
    Vincenzo Frascino authored
    [ Upstream commit bc420c6c ]
    
    Kmemleak relies on specific symbols to register the read only data
    during init (e.g. __start_ro_after_init).
    Trying to build an XIP kernel on arm results in the linking error
    reported below because when this option is selected read only data
    after init are not allowed since .data is read only (.rodata).
    
      arm-linux-gnueabihf-ld: mm/kmemleak.o: in function `kmemleak_init':
      kmemleak.c:(.init.text+0x148): undefined reference to `__end_ro_after_init'
      arm-linux-gnueabihf-ld: kmemleak.c:(.init.text+0x14c):
         undefined reference to `__end_ro_after_init'
      arm-linux-gnueabihf-ld: kmemleak.c:(.init.text+0x150):
         undefined reference to `__start_ro_after_init'
      arm-linux-gnueabihf-ld: kmemleak.c:(.init.text+0x156):
         undefined reference to `__start_ro_after_init'
      arm-linux-gnueabihf-ld: kmemleak.c:(.init.text+0x162):
         undefined reference to `__start_ro_after_init'
      arm-linux-gnueabihf-ld: kmemleak.c:(.init.text+0x16a):
         undefined reference to `__start_ro_after_init'
      linux/Makefile:1078: recipe for target 'vmlinux' failed
    
    Fix the issue enabling kmemleak only on non XIP kernels.
    Signed-off-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    c0deae0a
Kconfig 66 KB