freebsd-dev/sys/vm
Mark Johnston a9ea09e548 Re-check for wirings after busying the page in vm_page_release_locked().
A concurrent unlocked lookup can wire the page after
vm_page_release_locked() releases the last wiring, in which case
vm_page_release_locked() must not free the page.  Once the xbusy lock is
acquired, that, the object lock and the fact that the page is unmapped
ensure that the wire count cannot increase, so re-check for new wirings
after the page is xbusied.

Update the comment above vm_page_wired() to reflect the new
synchronization rules.

Reported by:	glebius
Reviewed by:	alc, jeff, kib
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D24592
2020-04-28 13:51:41 +00:00
..
_vm_radix.h
default_pager.c
device_pager.c
memguard.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
memguard.h
phys_pager.c
pmap.h
redzone.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
redzone.h
sg_pager.c
swap_pager.c Use COUNTER_U64_DEFINE_EARLY() in places where it simplifies things. 2020-03-06 19:10:00 +00:00
swap_pager.h
uma_core.c Clean up uma_int.h a bit. 2020-03-07 15:37:23 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h Clean up uma_int.h a bit. 2020-03-07 15:37:23 +00:00
uma.h Constify uma_zcache_create() and uma_zsecond_create()'s "name" argument. 2020-02-22 17:44:28 +00:00
vm_domainset.c
vm_domainset.h
vm_extern.h Use a single VM object for kernel stacks. 2020-04-26 20:08:57 +00:00
vm_fault.c Add a blocking counter KPI. 2020-02-28 16:05:18 +00:00
vm_glue.c Use a single VM object for kernel stacks. 2020-04-26 20:08:57 +00:00
vm_init.c
vm_kern.c Factor out the kmem contig page alloc and reclamation code. 2020-04-21 16:01:44 +00:00
vm_kern.h Use a single VM object for kernel stacks. 2020-04-26 20:08:57 +00:00
vm_map.c sys/vm: quiet -Wwrite-strings 2020-02-23 03:32:04 +00:00
vm_map.h
vm_meter.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
vm_mmap.c Introduce kern_mmap_req(). 2020-03-04 21:27:12 +00:00
vm_object.c Use COUNTER_U64_DEFINE_EARLY() in places where it simplifies things. 2020-03-06 19:10:00 +00:00
vm_object.h Add a blocking counter KPI. 2020-02-28 16:05:18 +00:00
vm_page.c Re-check for wirings after busying the page in vm_page_release_locked(). 2020-04-28 13:51:41 +00:00
vm_page.h Re-check for wirings after busying the page in vm_page_release_locked(). 2020-04-28 13:51:41 +00:00
vm_pageout.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
vm_pageout.h
vm_pagequeue.h
vm_pager.c sys/vm: quiet -Wwrite-strings 2020-02-23 03:32:04 +00:00
vm_pager.h Add a blocking counter KPI. 2020-02-28 16:05:18 +00:00
vm_param.h
vm_phys.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
vm_phys.h
vm_radix.c Move SMR pointer type definition and access macros to smr_types.h. 2020-03-07 00:55:46 +00:00
vm_radix.h Use SMR to provide a safe unlocked lookup for vm_radix. 2020-02-19 19:58:31 +00:00
vm_reserv.c Use COUNTER_U64_DEFINE_EARLY() in places where it simplifies things. 2020-03-06 19:10:00 +00:00
vm_reserv.h
vm_swapout_dummy.c
vm_swapout.c Use a single VM object for kernel stacks. 2020-04-26 20:08:57 +00:00
vm_unix.c
vm.h
vnode_pager.c VOP_GETPAGES_ASYNC(): consistently call iodone() callback in case of error. 2020-03-30 21:44:30 +00:00
vnode_pager.h