ARM: 8952/1: Disable kmemleak on XIP kernels
authorVincenzo Frascino <vincenzo.frascino@arm.com>
Fri, 10 Jan 2020 12:39:26 +0000 (13:39 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Sat, 25 Jan 2020 18:18:29 +0000 (18:18 +0000)
commitbc420c6ceefbb86cbbc8c00061bd779c17fa6997
treea68365e2815bbef97ae567c384e5c22b34784fd9
parent76950f7162cad51d2200ebd22c620c14af38f718
ARM: 8952/1: Disable kmemleak on XIP kernels

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: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/Kconfig