Joerg Roedel
3f8fd02b1b
mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy()
...
On x86-32 with PTI enabled, parts of the kernel page-tables are not shared
between processes. This can cause mappings in the vmalloc/ioremap area to
persist in some page-tables after the region is unmapped and released.
When the region is re-used the processes with the old mappings do not fault
in the new mappings but still access the old ones.
This causes undefined behavior, in reality often data corruption, kernel
oopses and panics and even spontaneous reboots.
Fix this problem by activly syncing unmaps in the vmalloc/ioremap area to
all page-tables in the system before the regions can be re-used.
References: https://bugzilla.suse.com/show_bug.cgi?id=1118689
Fixes: 5d72b4fba4 ('x86, mm: support huge I/O mapping capability I/F')
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://lkml.kernel.org/r/20190719184652.11391-4-joro@8bytes.org
2019-07-22 10:18:30 +02:00
..
kasan
mm/kasan: change kasan_check_{read,write} to return boolean
2019-07-12 11:05:42 -07:00
backing-dev.c
backing-dev: no need to check return value of debugfs_create functions
2019-06-03 15:49:07 +02:00
balloon_compaction.c
Merge 5.2-rc4 into char-misc-next
2019-06-09 09:11:21 +02:00
cleancache.c
Driver Core and debugfs changes for 5.3-rc1
2019-07-12 12:24:03 -07:00
cma.c
mm/cma.c: fail if fixed declaration can't be honored
2019-07-16 19:23:21 -07:00
cma.h
cma_debug.c
mm/cma_debug.c: fix the break condition in cma_maxchunk_get()
2019-05-14 09:47:45 -07:00
compaction.c
mm, compaction: make sure we isolate a valid PFN
2019-06-01 15:51:32 -07:00
debug.c
mm: update references to page _refcount
2019-05-14 19:52:47 -07:00
debug_page_ref.c
dmapool.c
mm: security: introduce init_on_alloc=1 and init_on_free=1 boot options
2019-07-12 11:05:46 -07:00
early_ioremap.c
fadvise.c
failslab.c
mm/failslab.c: by default, do not fail allocations with direct reclaim only
2019-07-12 11:05:43 -07:00
filemap.c
mm/filemap.c: correct the comment about VM_FAULT_RETRY
2019-07-12 11:05:43 -07:00
frame_vector.c
frontswap.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 482
2019-06-19 17:09:52 +02:00
gup.c
mm: introduce ARCH_HAS_PTE_DEVMAP
2019-07-16 19:23:25 -07:00
gup_benchmark.c
mm/gup: replace get_user_pages_longterm() with FOLL_LONGTERM
2019-05-14 09:47:45 -07:00
highmem.c
hmm.c
HMM patches for 5.3
2019-07-14 19:42:11 -07:00
huge_memory.c
mm: thp: fix false negative of shmem vma's THP eligibility
2019-07-18 17:08:06 -07:00
hugetlb.c
mm: hugetlb: soft-offline: dissolve_free_huge_page() return zero on !PageHuge
2019-06-29 16:43:45 +08:00
hugetlb_cgroup.c
hwpoison-inject.c
hwpoison-inject: no need to check return value of debugfs_create functions
2019-06-03 15:39:40 +02:00
init-mm.c
internal.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
interval_tree.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 248
2019-06-19 17:09:08 +02:00
Kconfig
mm: introduce ARCH_HAS_PTE_DEVMAP
2019-07-16 19:23:25 -07:00
Kconfig.debug
mm, debug_pagealloc: use a page type instead of page_ext flag
2019-07-12 11:05:43 -07:00
khugepaged.c
Revert "mm: page cache: store only head pages in i_pages"
2019-07-05 19:55:18 -07:00
kmemleak-test.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333
2019-06-05 17:37:06 +02:00
kmemleak.c
Driver Core and debugfs changes for 5.3-rc1
2019-07-12 12:24:03 -07:00
ksm.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 482
2019-06-19 17:09:52 +02:00
list_lru.c
mm: memcg/slab: stop setting page->mem_cgroup pointer for slab pages
2019-07-12 11:05:44 -07:00
maccess.c
The main changes in this release include:
2019-07-18 11:51:00 -07:00
madvise.c
mm: remove MEMORY_DEVICE_PUBLIC support
2019-07-02 14:32:43 -03:00
Makefile
HMM patches for 5.3
2019-07-14 19:42:11 -07:00
memblock.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
memcontrol.c
mm/memcontrol.c: keep local VM counters in sync with the hierarchical ones
2019-07-16 19:23:21 -07:00
memfd.c
Revert "mm: page cache: store only head pages in i_pages"
2019-07-05 19:55:18 -07:00
memory-failure.c
HMM patches for 5.3
2019-07-14 19:42:11 -07:00
memory.c
mm: thp: make transhuge_vma_suitable available for anonymous THP
2019-07-18 17:08:06 -07:00
memory_hotplug.c
mm/sparsemem: cleanup 'section number' data types
2019-07-18 17:08:07 -07:00
mempolicy.c
mm: export alloc_pages_vma
2019-07-02 14:32:44 -03:00
mempool.c
memtest.c
migrate.c
mm: migrate: remove unused mode argument
2019-07-18 17:08:07 -07:00
mincore.c
mm/mincore.c: fix race between swapoff and mincore
2019-07-12 11:05:43 -07:00
mlock.c
mm/mlock.c: change count_mm_mlocked_page_nr return type
2019-06-13 17:34:56 -10:00
mm_init.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
mmap.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
mmu_context.c
mmu_gather.c
mm: mmu_gather: remove __tlb_reset_range() for force flush
2019-06-13 17:34:56 -10:00
mmu_notifier.c
mm/mmu_notifier: use hlist_add_head_rcu()
2019-07-12 11:05:46 -07:00
mmzone.c
mprotect.c
mm/mprotect.c: fix compilation warning because of unused 'mm' variable
2019-05-14 09:47:51 -07:00
mremap.c
mm/mmu_notifier: contextual information for event triggering invalidation
2019-05-14 09:47:49 -07:00
msync.c
nommu.c
mm: fix the MAP_UNINITIALIZED flag
2019-07-16 19:23:21 -07:00
oom_kill.c
mm/oom_kill.c: remove redundant OOM score normalization in select_bad_process()
2019-07-12 11:05:47 -07:00
page-writeback.c
mm: remove the account_page_dirtied export
2019-07-12 11:05:42 -07:00
page_alloc.c
mm/sparsemem: support sub-section hotplug
2019-07-18 17:08:07 -07:00
page_counter.c
page_ext.c
mm, debug_pagealloc: use a page type instead of page_ext flag
2019-07-12 11:05:43 -07:00
page_idle.c
mm/page_idle.c: fix oops because end_pfn is larger than max_pfn
2019-06-29 16:43:45 +08:00
page_io.c
mm, swap: use rbtree for swap_extent
2019-07-12 11:05:43 -07:00
page_isolation.c
mm/page_isolation.c: change the prototype of undo_isolate_page_range()
2019-07-12 11:05:43 -07:00
page_owner.c
page_poison.c
page_vma_mapped.c
pagewalk.c
percpu-internal.h
percpu-km.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428
2019-06-05 17:37:16 +02:00
percpu-stats.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428
2019-06-05 17:37:16 +02:00
percpu-vm.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428
2019-06-05 17:37:16 +02:00
percpu.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428
2019-06-05 17:37:16 +02:00
pgtable-generic.c
process_vm_access.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
quicklist.c
readahead.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
rmap.c
mm/rmap.c: use the pra.mapcount to do the check
2019-05-14 09:47:49 -07:00
rodata_test.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441
2019-06-05 17:37:17 +02:00
shmem.c
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-07-19 10:42:02 -07:00
shuffle.c
mm: maintain randomization of page free lists
2019-05-14 19:52:48 -07:00
shuffle.h
mm: maintain randomization of page free lists
2019-05-14 19:52:48 -07:00
slab.c
mm: security: introduce init_on_alloc=1 and init_on_free=1 boot options
2019-07-12 11:05:46 -07:00
slab.h
mm: security: introduce init_on_alloc=1 and init_on_free=1 boot options
2019-07-12 11:05:46 -07:00
slab_common.c
mm/slab_common.c: work around clang bug #42570
2019-07-16 19:23:21 -07:00
slob.c
mm/slab: refactor common ksize KASAN logic into slab_common.c
2019-07-12 11:05:42 -07:00
slub.c
mm: security: introduce init_on_alloc=1 and init_on_free=1 boot options
2019-07-12 11:05:46 -07:00
sparse-vmemmap.c
mm/sparsemem: convert kmalloc_section_memmap() to populate_section_memmap()
2019-07-18 17:08:07 -07:00
sparse.c
mm/sparsemem: cleanup 'section number' data types
2019-07-18 17:08:07 -07:00
swap.c
docs: admin-guide: move sysctl directory to it
2019-07-15 11:03:01 -03:00
swap_cgroup.c
swap_slots.c
swap_state.c
mm/swap_state.c: simplify total_swapcache_pages() with get_swap_device()
2019-07-12 11:05:43 -07:00
swapfile.c
mm, swap: use rbtree for swap_extent
2019-07-12 11:05:43 -07:00
truncate.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
usercopy.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
userfaultfd.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499
2019-06-19 17:09:53 +02:00
util.c
mm: add account_locked_vm utility function
2019-07-16 19:23:25 -07:00
vmacache.c
vmalloc.c
mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy()
2019-07-22 10:18:30 +02:00
vmpressure.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
vmscan.c
mm/vmscan.c: add checks for incorrect handling of current->reclaim_state
2019-07-16 19:23:21 -07:00
vmstat.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
workingset.c
mm: memcontrol: make cgroup stats and events query API explicitly local
2019-05-14 19:52:53 -07:00
z3fold.c
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-07-19 10:42:02 -07:00
zbud.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
zpool.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
zsmalloc.c
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-07-19 10:42:02 -07:00
zswap.c
zswap: ignore debugfs_create_dir() return value
2019-06-03 15:39:39 +02:00