HomeFreeBSD

Re-check for wirings after busying the page in vm_page_release_locked().

Description

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

Details

Provenance
markjAuthored on
Reviewer
alc
Differential Revision
D24592: Re-check for wirings after busying the page in vm_page_release_locked().
Parents
rS360435: Improve error handling
Branches
Unknown
Tags
Unknown