• Vincenzo Frascino's avatar
    ARM: 8952/1: Disable kmemleak on XIP kernels · bc420c6c
    Vincenzo Frascino authored
    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>
    bc420c6c
Kconfig 64.7 KB