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

Reply via email to