• V
    ARM: 8952/1: Disable kmemleak on XIP kernels · bc420c6c
    Vincenzo Frascino 提交于
    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: NVincenzo Frascino <vincenzo.frascino@arm.com>
    Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
    bc420c6c
Kconfig 64.7 KB