ARM: mm: make vmalloc_seq handling SMP safe
authorArd Biesheuvel <ardb@kernel.org>
Mon, 10 Jan 2022 08:54:22 +0000 (09:54 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Tue, 25 Jan 2022 08:53:52 +0000 (09:53 +0100)
commitd31e23aff011d96278f4dbc22f2ec5db433eabaf
tree7da6315ac0b3016db684d3be4caac44f45ebd802
parentaa0a20f521516ba83ea29b510fcc12fb35920b48
ARM: mm: make vmalloc_seq handling SMP safe

Rework the vmalloc_seq handling so it can be used safely under SMP, as
we started using it to ensure that vmap'ed stacks are guaranteed to be
mapped by the active mm before switching to a task, and here we need to
ensure that changes to the page tables are visible to other CPUs when
they observe a change in the sequence count.

Since LPAE needs none of this, fold a check against it into the
vmalloc_seq counter check after breaking it out into a separate static
inline helper.

Given that vmap'ed stacks are now also supported on !SMP configurations,
let's drop the WARN() that could potentially now fire spuriously.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
arch/arm/include/asm/mmu.h
arch/arm/include/asm/mmu_context.h
arch/arm/include/asm/page.h
arch/arm/kernel/traps.c
arch/arm/mm/context.c
arch/arm/mm/ioremap.c