On Thu, Aug 18, 2022 at 12:39:58PM +0200, Martin Pieuchot wrote: > The lock must be grabbed before iterating on the global array, ok? > > Index: uvm/uvm_pager.c > =================================================================== > RCS file: /cvs/src/sys/uvm/uvm_pager.c,v > retrieving revision 1.88 > diff -u -p -r1.88 uvm_pager.c > --- uvm/uvm_pager.c 15 Aug 2022 03:21:04 -0000 1.88 > +++ uvm/uvm_pager.c 18 Aug 2022 10:31:16 -0000 > @@ -209,6 +209,7 @@ uvm_pseg_release(vaddr_t segaddr) > struct uvm_pseg *pseg; > vaddr_t va = 0; > > + mtx_enter(&uvm_pseg_lck); > for (pseg = &psegs[0]; pseg != &psegs[PSEG_NUMSEGS]; pseg++) { > if (pseg->start <= segaddr && > segaddr < pseg->start + MAX_PAGER_SEGS * MAXBSIZE) > @@ -222,7 +223,6 @@ uvm_pseg_release(vaddr_t segaddr) > /* test for no remainder */ > KDASSERT(segaddr == pseg->start + id * MAXBSIZE); > > - mtx_enter(&uvm_pseg_lck); > > KASSERT(UVM_PSEG_INUSE(pseg, id)); > >
ok mlarkin