android_kernel_oneplus_msm8998/arch/arc
Vineet Gupta f2aa5d3771 ARC: mm: don't loose PTE_SPECIAL in pte_modify()
commit 3925a16ae980c79d1a8fd182d7f9487da1edd4dc upstream.

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

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-08-20 18:09:20 +02:00
..
boot ARC: [plat-sim] unbork non default CONFIG_LINUX_LINK_BASE 2015-12-17 11:06:43 +05:30
configs ARC: switch to arc-linux- CROSS_COMPILE prefix across all configs 2015-11-16 12:00:09 +05:30
include ARC: mm: don't loose PTE_SPECIAL in pte_modify() 2016-08-20 18:09:20 +02:00
kernel arc: unwind: warn only once if DW2_UNWIND is disabled 2016-08-10 11:49:25 +02:00
lib ARCv2: lib: memcpy: use local symbols 2015-11-03 17:33:00 +05:30
mm ARC: mm: HIGHMEM: Fix section mismatch splat 2015-12-21 12:10:40 +05:30
oprofile
plat-axs10x ARCv2: smp: [plat-*]: No need to explicitly call mcip_init_smp() 2015-10-28 16:13:41 +05:30
plat-sim ARC: remove extraneous header include 2015-11-14 13:11:38 +05:30
plat-tb10x ARC: [plat*] move code out of .init_machine into common 2014-10-13 14:46:13 +05:30
Kbuild
Kconfig ARCv2: LLSC: software backoff is NOT needed starting HS2.1c 2016-07-27 09:47:31 -07:00
Kconfig.debug ARC: With earlycon in use, retire EARLY_PRINTK 2015-05-11 11:20:21 +05:30
Makefile ARC: unwind: ensure that .debug_frame is generated (vs. .eh_frame) 2016-08-10 11:49:25 +02:00