• Mark Johnston's avatar
    vm_reserv: Fix list locking in vm_reserv_reclaim_contig() · 968079f2
    Mark Johnston authored
    The per-domain partpop queue is locked by the combination of the
    per-domain lock and individual reservation mutexes.
    vm_reserv_reclaim_contig() scans the queue looking for partially
    populated reservations that can be reclaimed in order to satisfy the
    caller's allocation.
    
    During the scan, we drop the per-domain lock.  At this point, the rvn
    pointer may be invalidated.  Take care to load rvn after re-acquiring
    the per-domain lock.
    
    While here, simplify the condition used to check whether a reservation
    was dequeued while the per-domain lock was dropped.
    
    Reviewed by:	alc, kib
    Reported by:	gallatin
    MFC after:	3 days
    Sponsored by:	The FreeBSD Foundation
    Differential Revision:	https://reviews.freebsd.org/D29203
    968079f2