linux/arch/arc
Vineet Gupta 77c6ffdbce ARC: mm: don't loose PTE_SPECIAL in pte_modify()
[ Upstream commit 3925a16ae9 ]

LTP madvise05 was generating mm splat

| [ARCLinux]# /sd/ltp/testcases/bin/madvise05
| BUG: Bad page map in process madvise05  pte:80e08211 pmd:9f7d4000
| page:9fdcfc90 count:1 mapcount:-1 mapping:  (null) index:0x0 flags: 0x404(referenced|reserved)
| page dumped because: bad pte
| addr:200b8000 vm_flags:00000070 anon_vma:  (null) mapping:  (null) index:1005c
| file:  (null) fault:  (null) mmap:  (null) readpage:  (null)
| CPU: 2 PID: 6707 Comm: madvise05

And for newer kernels, the system was rendered unusable afterwards.

The problem was mprotect->pte_modify() clearing PTE_SPECIAL (which is
set to identify the special zero page wired to the pte).
When pte was finally unmapped, special casing for zero page was not
done, and instead it was treated as a "normal" page, tripping on the
map counts etc.

This fixes ARC STAR 9001053308

Cc: <stable@vger.kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
History 2016-08-22 12:23:22 -04:00
..
boot ARC: [nsimosci] move peripherals to match model to FPGA 2015-01-27 08:29:36 -08:00
configs ARC: [arcfpga] Get rid of ARC_BOARD_ANGEL4 and ARC_BOARD_ML509 2014-10-13 14:46:14 +05:30
include ARC: mm: don't loose PTE_SPECIAL in pte_modify() 2016-08-22 12:23:22 -04:00
kernel arc: unwind: warn only once if DW2_UNWIND is disabled 2016-07-12 08:47:16 -04:00
lib ARC: switch to generic ENTRY/END assembler annotations 2014-03-26 14:31:28 +05:30
mm arc: mm: Fix build failure 2015-02-05 22:36:01 -08:00
oprofile ARC: OProfile support 2013-02-15 23:16:00 +05:30
plat-arcfpga ARC: [arcfpga] Get rid of ARC_BOARD_ANGEL4 and ARC_BOARD_ML509 2014-10-13 14:46:14 +05:30
plat-tb10x ARC: [plat*] move code out of .init_machine into common 2014-10-13 14:46:13 +05:30
Kbuild ARC: Build system: Makefiles, Kconfig, Linker script 2013-02-11 20:00:25 +05:30
Kconfig ARC: Remove unneeded Kconfig entry NO_DMA 2014-10-13 14:46:19 +05:30
Kconfig.debug consolidate per-arch stack overflow debugging options 2013-07-04 11:25:39 -07:00
Makefile ARC: unwind: ensure that .debug_frame is generated (vs. .eh_frame) 2016-07-12 08:47:15 -04:00