linux/arch/powerpc/kernel
Catalin Marinas 298a32b132 kmemleak: powerpc: skip scanning holes in the .bss section
Commit 2d4f567103 ("KVM: PPC: Introduce kvm_tmp framework") adds
kvm_tmp[] into the .bss section and then free the rest of unused spaces
back to the page allocator.

kernel_init
  kvm_guest_init
    kvm_free_tmp
      free_reserved_area
        free_unref_page
          free_unref_page_prepare

With DEBUG_PAGEALLOC=y, it will unmap those pages from kernel.  As the
result, kmemleak scan will trigger a panic when it scans the .bss
section with unmapped pages.

This patch creates dedicated kmemleak objects for the .data, .bss and
potentially .data..ro_after_init sections to allow partial freeing via
the kmemleak_free_part() in the powerpc kvm_free_tmp() function.

Link: http://lkml.kernel.org/r/20190321171917.62049-1-catalin.marinas@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Reported-by: Qian Cai <cai@lca.pw>
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Tested-by: Qian Cai <cai@lca.pw>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Avi Kivity <avi@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krcmar <rkrcmar@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-04-05 16:02:30 -10:00
..
syscalls powerpc updates for 5.1 2019-03-07 12:56:26 -08:00
trace powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
vdso32 powerpc: Enable kcov 2019-02-23 21:04:32 +11:00
vdso64 powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 2019-03-18 19:26:38 +11:00
.gitignore
align.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
asm-offsets.c powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
btext.c powerpc: Rework btext_find_display to use of_stdout and device_type helpers 2018-11-26 22:33:37 +11:00
cacheinfo.c powerpc: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
cacheinfo.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
compat_audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cpu_setup_6xx.S powerpc/6xx: fix setup and use of SPRN_SPRG_PGDIR for hash32 2019-03-19 00:30:19 +11:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc/mm: move platform specific mmu-xxx.h in platform directories 2018-12-04 19:45:01 +11:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc: Turn off CPU_FTR_P9_TM_HV_ASSIST in non-hypervisor mode 2018-10-09 16:04:27 +11:00
cpu_setup_ppc970.S
cputable.c powerpc/83xx: handle machine check caused by watchdog timer 2018-12-21 20:56:41 -06:00
crash_dump.c powerpc: don't use ioremap_prot() nor __ioremap() unless really needed. 2018-10-14 18:04:09 +11:00
crash.c powerpc: remove kdump.h from page.h 2018-07-30 22:47:53 +10:00
dbell.c
dma-iommu.c powerpc/dma: use the dma_direct mapping routines 2019-02-18 22:41:04 +11:00
dma-mask.c dma-mapping, powerpc: simplify the arch dma_set_mask override 2019-02-18 22:41:03 +11:00
dma-swiotlb.c powerpc/dma: use the generic direct mapping bypass 2019-02-18 22:41:04 +11:00
dt_cpu_ftrs.c treewide: add checks for the return value of memblock_alloc*() 2019-03-12 10:04:02 -07:00
eeh_cache.c powerpc/eeh_cache: Bump log level of eeh_addr_cache_print() 2019-02-22 00:10:14 +11:00
eeh_dev.c powerpc/eeh: Cleanup list_head field names 2018-10-13 22:21:25 +11:00
eeh_driver.c powerpc/eeh: Improve recovery of passed-through devices 2019-02-05 11:55:44 +11:00
eeh_event.c powerpc/eeh: Add eeh_force_recover to debugfs 2019-02-22 00:10:15 +11:00
eeh_pe.c powerpc/eeh: Add include_passed to eeh_pe_state_clear() 2019-02-05 11:55:43 +11:00
eeh_sysfs.c powerpc/eeh: Add include_passed to eeh_pe_state_clear() 2019-02-05 11:55:43 +11:00
eeh.c powerpc/eeh: Add eeh_force_recover to debugfs 2019-02-22 00:10:15 +11:00
entry_32.S powerpc/32: Clear on-stack exception marker upon exception return 2019-03-04 00:37:23 +11:00
entry_64.S powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
epapr_hcalls.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
epapr_paravirt.c
exceptions-64e.S powerpc/fsl: Fix the flush of branch predictor. 2019-02-27 22:52:38 +11:00
exceptions-64s.S powerpc/64s: Fix unrelocated interrupt trampoline address test 2019-03-02 00:25:47 +11:00
fadump.c powerpc/fadump: Do not allow hot-remove memory from fadump reserved area. 2018-12-21 11:32:49 +11:00
firmware.c
fpu.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
fsl_booke_entry_mapping.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
head_8xx.S powerpc: Rename THREAD_INFO to TASK_STACK 2019-02-23 22:31:40 +11:00
head_32.S powerpc/6xx: fix setup and use of SPRN_SPRG_PGDIR for hash32 2019-03-19 00:30:19 +11:00
head_40x.S powerpc: Rename THREAD_INFO to TASK_STACK 2019-02-23 22:31:40 +11:00
head_44x.S powerpc: 'current_set' is now a table of task_struct pointers 2019-02-23 22:31:40 +11:00
head_64.S powerpc/64: Simplify __secondary_start paca->kstack handling 2019-02-23 22:31:39 +11:00
head_booke.h powerpc: Activate CONFIG_THREAD_INFO_IN_TASK 2019-02-23 22:31:40 +11:00
head_fsl_booke.S powerpc: remove dead code in head_fsl_booke.S 2019-03-05 16:38:45 +11:00
hw_breakpoint.c perf/arch/powerpc: Implement hw_breakpoint_arch_parse() 2018-06-26 09:07:55 +02:00
idle_6xx.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
idle_book3e.S powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
idle_book3s.S Merge branch 'fixes' into next 2018-08-13 15:59:06 +10:00
idle_e500.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
idle_power4.S powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
idle.c
ima_kexec.c
io-workarounds.c powerpc: handover page flags with a pgprot_t parameter 2018-10-14 18:04:09 +11:00
io.c
iomap.c powerpc: iomap.c: introduce io{read|write}64_{lo_hi|hi_lo} 2018-04-05 14:59:26 +10:00
iommu.c IOMMU Updates for Linux v4.21 2019-01-01 15:55:29 -08:00
irq.c powerpc: clean stack pointers naming 2019-02-23 22:31:40 +11:00
isa-bridge.c powerpc: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
jump_label.c jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
kexec_elf_64.c kernel/kexec_file.c: allow archs to set purgatory load address 2018-04-13 17:10:28 -07:00
kgdb.c powerpc: Activate CONFIG_THREAD_INFO_IN_TASK 2019-02-23 22:31:40 +11:00
kprobes-ftrace.c bpf/error-inject/kprobes: Clear current_kprobe and enable preempt in kprobe 2018-06-21 12:33:19 +02:00
kprobes.c bpf/error-inject/kprobes: Clear current_kprobe and enable preempt in kprobe 2018-06-21 12:33:19 +02:00
kvm_emul.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10:00
kvm.c kmemleak: powerpc: skip scanning holes in the .bss section 2019-04-05 16:02:30 -10:00
l2cr_6xx.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
legacy_serial.c powerpc: Use of_node_name_eq for node name comparisons 2018-12-22 21:29:50 +11:00
machine_kexec_32.c
machine_kexec_64.c powerpc: Activate CONFIG_THREAD_INFO_IN_TASK 2019-02-23 22:31:40 +11:00
machine_kexec_file_64.c powerpc, kexec_file: factor out memblock-based arch_kexec_walk_mem() 2018-12-06 14:38:50 +00:00
machine_kexec.c powerpc: remove kdump.h from page.h 2018-07-30 22:47:53 +10:00
Makefile powerpc: Enable kcov 2019-02-23 21:04:32 +11:00
mce_power.c powerpc/64s/hash: Do not use PPC_INVALIDATE_ERAT on CPUs before POWER9 2018-10-04 23:16:53 +10:00
mce.c powerpc/64s: Fix HV NMI vs HV interrupt recoverability test 2019-02-26 23:28:24 +11:00
misc_32.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
misc_64.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
misc.S powerpc/misc: merge reloc_offset() and add_reloc_offset() 2018-06-04 00:39:17 +10:00
module_32.c powerpc/sparse: Fix plain integer as NULL pointer warning 2018-05-25 12:04:38 +10:00
module_64.c powerpc/64/module: REL32 relocation range check 2018-10-20 13:26:47 +11:00
module.c powerpc64/module elfv1: Set opd addresses after module relocation 2018-10-20 13:26:47 +11:00
module.lds powerpc/modules: Fix alignment of .toc section in kernel modules 2017-12-11 13:03:35 +11:00
msi.c powerpc/msi: Fix NULL pointer access in teardown code 2018-11-29 23:49:11 +11:00
nvram_64.c powerpc: Adopt nvram module for PPC64 2019-01-22 10:21:45 +01:00
of_platform.c
optprobes_head.S powerpc/64: Rename soft_enabled to irq_soft_mask 2018-01-19 22:37:01 +11:00
optprobes.c powerpc/kprobes: Do not disable interrupts for optprobes and kprobes_on_ftrace 2017-11-12 23:51:41 +11:00
paca.c powerpc: use memblock functions returning virtual address 2019-03-12 10:04:01 -07:00
pci_32.c treewide: add checks for the return value of memblock_alloc*() 2019-03-12 10:04:02 -07:00
pci_64.c powerpc: handover page flags with a pgprot_t parameter 2018-10-14 18:04:09 +11:00
pci_dn.c powerpc/pci: Separate SR-IOV Calls 2017-12-11 13:03:35 +11:00
pci_of_scan.c powerpc: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
pci-common.c powerpc updates for 5.1 2019-03-07 12:56:26 -08:00
pci-hotplug.c powerpc/pci: Unroll two pass loop when scanning bridges 2017-12-18 23:05:52 -06:00
pmc.c powerpc: change CONFIG_6xx to CONFIG_PPC_BOOK3S_32 2018-11-26 22:33:37 +11:00
ppc32.h
ppc_save_regs.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10:00
proc_powerpc.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
process.c powerpc: regain entire stack space 2019-02-23 22:31:40 +11:00
prom_init_check.sh powerpc: Check prom_init for disallowed sections 2018-10-19 00:56:17 +11:00
prom_init.c powerpc/prom_init: Generate "phandle" instead of "linux, phandle" 2018-10-19 00:56:17 +11:00
prom_parse.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
prom.c powerpc: use memblock functions returning virtual address 2019-03-12 10:04:01 -07:00
ptrace32.c
ptrace.c powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning 2019-02-22 00:10:14 +11:00
reloc_32.S
reloc_64.S
rtas_flash.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
rtas_pci.c
rtas-proc.c powerpc updates for 4.18 2018-06-07 10:23:33 -07:00
rtas-rtc.c powerpc: use time64_t in read_persistent_clock 2018-06-03 20:43:33 +10:00
rtas.c memblock: drop memblock_alloc_base() 2019-03-12 10:04:01 -07:00
rtasd.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
security.c powerpc/security: Fix spectre_v2 reporting 2019-03-21 21:09:03 +11:00
setup_32.c powerpc updates for 5.1 2019-03-07 12:56:26 -08:00
setup_64.c treewide: add checks for the return value of memblock_alloc*() 2019-03-12 10:04:02 -07:00
setup-common.c treewide: add checks for the return value of memblock_alloc*() 2019-03-12 10:04:02 -07:00
setup.h powerpc/tau: Synchronize function prototypes and body 2018-05-25 12:04:43 +10:00
signal_32.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
signal_64.c powerpc/tm: Limit TM code inside PPC_TRANSACTIONAL_MEM 2019-01-11 23:45:00 +11:00
signal.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
signal.h powerpc/syscalls: signal_{32, 64} - switch to SYSCALL_DEFINE 2018-05-10 23:25:13 +10:00
smp-tbsync.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
smp.c powerpc: 'current_set' is now a table of task_struct pointers 2019-02-23 22:31:40 +11:00
stacktrace.c powerpc: Remove export of save_stack_trace_tsk_reliable() 2019-03-02 14:43:05 +11:00
suspend.c
swsusp_32.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
swsusp_64.c
swsusp_asm64.S powerpc/64s/hash: Simplify slb_flush_and_rebolt() 2018-10-14 18:04:09 +11:00
swsusp_booke.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
swsusp.c
sys_ppc32.c powerpc/syscalls: kill ppc32_select() 2018-05-10 23:25:15 +10:00
syscalls.c powerpc/64: Make sys_switch_endian() traceable 2019-02-22 00:10:15 +11:00
sysfs.c powerpc: change CONFIG_6xx to CONFIG_PPC_BOOK3S_32 2018-11-26 22:33:37 +11:00
systbl_chk.sh powerpc: Make it clearer that systbl check errors are errors 2018-05-10 23:25:16 +10:00
systbl.S powerpc: remove nargs from __SYSCALL 2019-03-02 14:43:05 +11:00
tau_6xx.c powerpc/tau: Make some function static 2018-05-25 12:04:44 +10:00
time.c powerpc/kernel/time: Remove duplicate header 2019-01-30 23:42:31 +11:00
tm.S Merge branch 'fixes' into next 2018-10-09 16:51:05 +11:00
traps.c powerpc/64s: Include <asm/nmi.h> header file to fix a warning 2019-03-13 15:03:13 +11:00
udbg_16550.c
udbg.c powerpc: use a CONSOLE_LOGLEVEL_DEBUG macro 2019-01-14 20:39:27 +11:00
uprobes.c
vdso.c powerpc/vdso: don't clear PG_reserved 2019-03-05 21:07:18 -08:00
vecemu.c powerpc: Add a missing include header 2018-05-25 12:04:46 +10:00
vector.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10:00
vmlinux.lds.S powerpc/kconfig: define CONFIG_DATA_SHIFT and CONFIG_ETEXT_SHIFT 2019-02-23 21:04:32 +11:00
watchdog.c powerpc: NMI IPI make NMI IPIs fully sychronous 2018-07-24 22:03:14 +10:00