linux/arch/powerpc/mm
Sebastian Siewior 08a5bb2921 powerpc/mm: Fixup preempt underflow with huge pages
hugepd_free() used __get_cpu_var() once. Nothing ensured that the code
accessing the variable did not migrate from one CPU to another and soon
this was noticed by Tiejun Chen in 94b09d7554 ("powerpc/hugetlb:
Replace __get_cpu_var with get_cpu_var"). So we had it fixed.

Christoph Lameter was doing his __get_cpu_var() replaces and forgot
PowerPC. Then he noticed this and sent his fixed up batch again which
got applied as 69111bac42 ("powerpc: Replace __get_cpu_var uses").

The careful reader will noticed one little detail: get_cpu_var() got
replaced with this_cpu_ptr(). So now we have a put_cpu_var() which does
a preempt_enable() and nothing that does preempt_disable() so we
underflow the preempt counter.

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: stable@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-03-29 12:08:07 +11:00
..
8xx_mmu.c powerpc/8xx: rewrite flush_instruction_cache() in C 2016-03-11 17:20:11 -06:00
40x_mmu.c powerpc/mm: Don't use pmd_val, pud_val and pgd_val as lvalue 2015-12-14 15:19:07 +11:00
44x_mmu.c
Makefile powerpc/8xx: Map linear kernel RAM with 8M pages 2016-03-11 17:18:01 -06:00
copro_fault.c
dma-noncoherent.c powerpc: Simplify test in __dma_sync() 2016-03-11 17:20:12 -06:00
fault.c
fsl_booke_mmu.c powerpc32: refactor x_mapped_by_bats() and x_mapped_by_tlbcam() together 2016-03-11 17:18:02 -06:00
hash64_4k.c powerpc/mm: add _PAGE_HASHPTE similar to 4K hash 2016-03-03 21:18:29 +11:00
hash64_64k.c powerp/mm: Update code comments 2016-03-03 21:18:29 +11:00
hash_low_32.S
hash_native_64.c powerpc/mm: Move THP headers around 2015-12-14 15:19:14 +11:00
hash_utils_64.c powerpc updates for 4.6 2016-03-19 15:38:41 -07:00
highmem.c
hugepage-hash64.c powerpc/mm/hash: Clear the invalid slot information correctly 2016-02-22 19:27:39 +11:00
hugetlbpage-book3e.c powerpc/fsl-book3e: Avoid lbarx on e5500 2016-03-03 23:43:05 -06:00
hugetlbpage-hash64.c powerpc/mm/book3s-64: Move HPTE-related bits in PTE to upper end 2016-02-29 20:34:39 +11:00
hugetlbpage.c powerpc/mm: Fixup preempt underflow with huge pages 2016-03-29 12:08:07 +11:00
icswx.c
icswx.h
icswx_pid.c
init_32.c powerpc updates for 4.6 2016-03-19 15:38:41 -07:00
init_64.c powerpc/mm: Switch book3s 64 with 64K page size to 4 level page table 2016-03-03 21:18:28 +11:00
mem.c powerpc updates for 4.6 2016-03-19 15:38:41 -07:00
mmap.c mm: ASLR: use get_random_long() 2016-02-27 10:28:52 -08:00
mmu_context_hash32.c
mmu_context_hash64.c mm: introduce page reference manipulation functions 2016-03-17 15:09:34 -07:00
mmu_context_iommu.c
mmu_context_nohash.c
mmu_decl.h powerpc32: remove ioremap_base 2016-03-11 17:18:02 -06:00
numa.c powerpc updates for 4.4 2015-11-05 23:38:43 -08:00
pgtable.c powerpc: Make vmalloc_to_phys() public 2016-02-16 13:44:26 +11:00
pgtable_32.c powerpc32: PAGE_EXEC required for inittext 2016-03-11 20:04:32 -06:00
pgtable_64.c powerpc updates for 4.6 2016-03-19 15:38:41 -07:00
ppc_mmu_32.c powerpc32: refactor x_mapped_by_bats() and x_mapped_by_tlbcam() together 2016-03-11 17:18:02 -06:00
slb.c powerpc: Add function to copy mm_context_t to the paca 2015-12-19 22:13:12 +11:00
slb_low.S
slice.c powerpc: Add function to copy mm_context_t to the paca 2015-12-19 22:13:12 +11:00
subpage-prot.c thp: rename split_huge_page_pmd() to split_huge_pmd() 2016-01-15 17:56:32 -08:00
tlb_hash32.c
tlb_hash64.c powerpc/mm: Differentiate between hugetlb and THP during page walk 2015-10-12 15:30:09 +11:00
tlb_low_64e.S powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
tlb_nohash.c powerpc/mm: any thread in one core can be the first to setup TLB1 2016-03-04 23:44:02 -06:00
tlb_nohash_low.S powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
vphn.c
vphn.h