freebsd-dev/sys/vm
Mark Johnston 150d384e5c Fix a use-after-free in swp_pager_meta_free().
This was introduced in r326329 and explains the crashes mentioned in
the commit log message for r339934.  In particular, on INVARIANTS
kernels, UMA trashing causes the loop to exit early, leaving swap
blocks behind when they should have been freed.  After r336984 this
became more problematic since new anonymous mappings were more
likely to reuse swapped-out subranges of existing VM objects, so faults
would trigger pageins of freed memory rather than returning zeroed
pages.

Reviewed by:	kib
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D17897
2018-11-07 23:28:11 +00:00
..
_vm_radix.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
default_pager.c SPDX: wrong license. 2017-11-30 15:45:42 +00:00
device_pager.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
memguard.c Eliminate kmem_arena and kmem_object in preparation for further NUMA commits. 2017-11-28 23:40:54 +00:00
memguard.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
phys_pager.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
pmap.h Add pmap_is_valid_memattr(9). 2018-08-01 18:45:51 +00:00
redzone.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
redzone.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
sg_pager.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
swap_pager.c Fix a use-after-free in swp_pager_meta_free(). 2018-11-07 23:28:11 +00:00
swap_pager.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
uma_core.c Add malloc_domainset(9) and _domainset variants to other allocator KPIs. 2018-10-30 18:26:34 +00:00
uma_dbg.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
uma_dbg.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
uma_int.h Add an #include required after r339686. 2018-10-24 16:49:16 +00:00
uma.h Eliminate the arena parameter to kmem_free(). Implicitly this corrects an 2018-08-25 19:38:08 +00:00
vm_domainset.c Add a !NUMA definition for vm_domainset_iter_policy_ref_init(). 2018-10-24 17:09:20 +00:00
vm_domainset.h Refactor domainset iterators for use by malloc(9) and UMA. 2018-10-23 16:35:58 +00:00
vm_extern.h Add malloc_domainset(9) and _domainset variants to other allocator KPIs. 2018-10-30 18:26:34 +00:00
vm_fault.c Eliminate typically pointless calls to vm_fault_prefault() on soft, copy- 2018-10-27 17:49:46 +00:00
vm_glue.c Refactor domainset iterators for use by malloc(9) and UMA. 2018-10-23 16:35:58 +00:00
vm_init.c Fix some problems that manifest when NUMA domain 0 is empty. 2018-10-30 17:57:40 +00:00
vm_kern.c Avoid specifying VM_PROT_EXECUTE in mappings from pipe_map and exec_map. 2018-11-06 21:57:03 +00:00
vm_kern.h Ensure that imports into per-domain kmem arenas are KVA_QUANTUM-aligned. 2018-09-20 18:29:55 +00:00
vm_map.c Initialize the eflags field of vm_map headers. 2018-11-02 16:26:44 +00:00
vm_map.h Initialize the eflags field of vm_map headers. 2018-11-02 16:26:44 +00:00
vm_meter.c Add a per-pagequeue pdpages counter. 2018-08-23 21:03:45 +00:00
vm_mmap.c vm: stop taking proc lock in mmap to satisfy racct if it is disabled 2018-09-18 01:24:30 +00:00
vm_object.c Revert r336984. 2018-10-30 22:40:40 +00:00
vm_object.h Use per-domain locks for vm page queue free. Move paging control from 2018-02-06 22:10:07 +00:00
vm_page.c Fix some problems that manifest when NUMA domain 0 is empty. 2018-10-30 17:57:40 +00:00
vm_page.h Remove vm_page_remque(). 2018-09-06 16:17:45 +00:00
vm_pageout.c Initialize last_target in the laundry thread control loop. 2018-11-06 02:52:54 +00:00
vm_pageout.h Avoid resource deadlocks when one domain has exhausted its memory. Attempt 2018-09-06 19:28:52 +00:00
vm_pagequeue.h Allow empty NUMA memory domains to support Threadripper2 2018-10-01 14:14:21 +00:00
vm_pager.c SPDX: Consider code from Carnegie-Mellon University. 2017-11-30 15:48:35 +00:00
vm_pager.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
vm_param.h SPDX: Consider code from Carnegie-Mellon University. 2017-11-30 15:48:35 +00:00
vm_phys.c Initialize static domainsets regardless of whether an SRAT is present. 2018-10-23 18:07:16 +00:00
vm_phys.h Create some global domainsets and refactor NUMA registration. 2018-10-20 17:36:00 +00:00
vm_radix.c vm: stop passing M_ZERO when allocating radix nodes 2018-06-24 13:08:05 +00:00
vm_radix.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
vm_reserv.c Use the ticks since the last update to reduce hysteresis in the partpopq and 2018-07-07 01:54:45 +00:00
vm_reserv.h Lock reservations with a dedicated lock in each reservation. Protect the 2018-03-22 19:21:11 +00:00
vm_swapout_dummy.c SPDX: Consider code from Carnegie-Mellon University. 2017-11-30 15:48:35 +00:00
vm_swapout.c Avoid a redundancy in a comment updated by r339601. 2018-10-22 17:17:30 +00:00
vm_unix.c Use __riscv to determine building for RISC-V 2018-07-23 19:49:54 +00:00
vm.h Move vm_ndomains to vm.h where it can be used with a single header include 2018-03-27 03:27:02 +00:00
vnode_pager.c Implement several enhancements to NUMA policies. 2018-03-29 02:54:50 +00:00
vnode_pager.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00