android_kernel_samsung_msm8976/mm
Jiri Kosina 6abf5b32fc mm/mincore.c: make mincore() more conservative
commit 134fca9063ad4851de767d1768180e5dede9a881 upstream.

The semantics of what mincore() considers to be resident is not
completely clear, but Linux has always (since 2.3.52, which is when
mincore() was initially done) treated it as "page is available in page
cache".

That's potentially a problem, as that [in]directly exposes
meta-information about pagecache / memory mapping state even about
memory not strictly belonging to the process executing the syscall,
opening possibilities for sidechannel attacks.

Change the semantics of mincore() so that it only reveals pagecache
information for non-anonymous mappings that belog to files that the
calling process could (if it tried to) successfully open for writing;
otherwise we'd be including shared non-exclusive mappings, which

 - is the sidechannel

 - is not the usecase for mincore(), as that's primarily used for data,
   not (shared) text

[jkosina@suse.cz: v2]
  Link: http://lkml.kernel.org/r/20190312141708.6652-2-vbabka@suse.cz
[mhocko@suse.com: restructure can_do_mincore() conditions]
Link: http://lkml.kernel.org/r/nycvar.YFH.7.76.1903062342020.19912@cbobk.fhfr.pm
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Josh Snyder <joshs@netflix.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Originally-by: Linus Torvalds <torvalds@linux-foundation.org>
Originally-by: Dominique Martinet <asmadeus@codewreck.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Kevin Easton <kevin@guarana.org>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Cyril Hrubis <chrubis@suse.cz>
Cc: Tejun Heo <tj@kernel.org>
Cc: Kirill A. Shutemov <kirill@shutemov.name>
Cc: Daniel Gruss <daniel@gruss.cc>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
2019-07-27 22:11:11 +02:00
..
kasan
Kconfig Import T813XXS2BRC2 kernel source changes 2018-05-26 00:39:42 +02:00
Kconfig.debug
Makefile mm: per-thread vma caching 2019-07-27 22:08:06 +02:00
backing-dev.c
balloon_compaction.c
bootmem.c
bounce.c mm: convert some level-less printks to pr_* 2019-07-27 22:08:13 +02:00
cleancache.c
compaction.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
debug-pagealloc.c mm/debug-pagealloc.c: print page physical address for 2015-08-23 23:19:22 -07:00
dmapool.c
early_ioremap.c
fadvise.c mm/fadvise.c: fix signed overflow UBSAN complaint 2019-07-27 21:51:37 +02:00
failslab.c
filemap.c mm, fs: check for fatal signals in do_generic_file_read() 2019-07-27 21:43:51 +02:00
filemap_xip.c
fremap.c
frontswap.c
highmem.c
huge_memory.c mm, thp: fix collapsing of hugepages on madvise 2019-07-27 22:08:13 +02:00
hugetlb.c mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy a fault 2015-10-22 14:37:50 -07:00
hugetlb_cgroup.c
hwpoison-inject.c
init-mm.c
internal.h
interval_tree.c
kmemcheck.c
kmemleak-test.c
kmemleak.c mm: kmemleak: allow safe memory scanning during kmemleak disabling 2015-06-22 10:47:32 +05:30
ksm.c mm,ksm: fix endless looping in allocating memory when ksm enable 2019-07-27 21:42:51 +02:00
maccess.c
madvise.c mm/madvise.c: fix madvise() infinite loop under special circumstances 2019-07-27 21:45:21 +02:00
memblock.c
memcontrol.c UPSTREAM: memcg: Only free spare array when readers are done 2016-05-18 14:36:06 +05:30
memory-failure.c mm: hwpoison: use do_send_sig_info() instead of force_sig() 2019-07-27 22:10:18 +02:00
memory.c mm: introduce vma_is_anonymous(vma) helper 2019-07-27 22:11:11 +02:00
memory_hotplug.c mm/memory_hotplug.c: check start_pfn in test_pages_in_a_zone() 2019-07-27 21:43:51 +02:00
mempolicy.c mm: convert some level-less printks to pr_* 2019-07-27 22:08:13 +02:00
mempool.c
memtest.c
migrate.c Sanitize 'move_pages()' permission checks 2019-07-27 21:44:50 +02:00
mincore.c mm/mincore.c: make mincore() more conservative 2019-07-27 22:11:11 +02:00
mlock.c mm: do not bug_on on incorrect length in __mm_populate() 2019-07-27 22:08:08 +02:00
mm_init.c
mmap.c mm: enforce min addr even if capable() in expand_downwards() 2019-07-27 22:10:23 +02:00
mmu_context.c
mmu_notifier.c
mmzone.c
mprotect.c mm/mprotect: add a cond_resched() inside change_pmd_range() 2019-07-27 21:46:25 +02:00
mremap.c mremap: properly flush TLB before releasing the page 2019-07-27 21:53:28 +02:00
msync.c
nobootmem.c
nommu.c mm: convert some level-less printks to pr_* 2019-07-27 22:08:13 +02:00
oom_kill.c mm, oom: fix use-after-free in oom_kill_process 2019-07-27 22:05:56 +02:00
page-writeback.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
page_alloc.c ANDROID: Remove conflicting Samsung options for upstream changes 2019-07-27 22:09:50 +02:00
page_cgroup.c
page_io.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
page_isolation.c mm: add zone counter for cma pages 2019-07-27 21:51:09 +02:00
pageowner.c
pagewalk.c pagewalk: improve vma handling 2019-07-27 21:51:51 +02:00
percpu-km.c
percpu-vm.c
percpu.c
pgtable-generic.c
process_reclaim.c Revert "lowmemorykiller: Introduce sysfs node for ALMK and PPR adj threshold" 2019-07-27 22:09:43 +02:00
process_vm_access.c ptrace: use fsuid, fsgid, effective creds for fs access checks 2016-02-25 11:57:47 -08:00
quicklist.c
readahead.c readahead: make context readahead more conservative 2019-07-27 21:49:54 +02:00
rmap.c mm: fix anon_vma->degree underflow in anon_vma endless growing prevention 2019-07-27 22:08:15 +02:00
shmem.c tmpfs: fix uninitialized return value in shmem_link 2019-07-27 22:09:41 +02:00
showmem.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
slab.c cpuset: PF_SPREAD_PAGE and PF_SPREAD_SLAB should be atomic flags 2019-07-27 21:44:59 +02:00
slab.h
slab_common.c
slob.c
slub.c
sparse-vmemmap.c
sparse.c
swap.c
swap_state.c Revert "lowmemorykiller: Don't count swap cache pages twice" 2019-07-27 22:09:45 +02:00
swapfile.c swapfile: fix memory corruption via malformed swapfile 2019-07-27 21:42:14 +02:00
truncate.c
util.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
vmacache.c mm: get rid of vmacache_flush_all() entirely 2019-07-27 22:08:09 +02:00
vmalloc.c mm/vmalloc.c: fix kernel BUG at mm/vmalloc.c:512! 2019-07-27 22:10:02 +02:00
vmpressure.c mm: vmpressure: fix sending wrong events on underflow 2019-07-27 21:43:56 +02:00
vmscan.c mm: convert some level-less printks to pr_* 2019-07-27 22:08:13 +02:00
vmstat.c Revert "lowmemorykiller: Don't count swap cache pages twice" 2019-07-27 22:09:45 +02:00
zbud.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
zpool.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
zsmalloc.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
zswap.c Import latest Samsung release 2017-04-18 03:43:52 +02:00