Sergey Bugaev, le jeu. 06 mai 2021 15:56:26 +0300, a ecrit: > _pager_pagemap_resize () returns an error or 0 on success, > not a boolean.
Quite trivially bogus indeed :) Applied, thanks! > --- > libpager/offer-page.c | 27 ++++++++++++++------------- > 1 file changed, 14 insertions(+), 13 deletions(-) > > diff --git a/libpager/offer-page.c b/libpager/offer-page.c > index 9f090bcb..ddea236a 100644 > --- a/libpager/offer-page.c > +++ b/libpager/offer-page.c > @@ -31,21 +31,22 @@ pager_offer_page (struct pager *p, > pthread_mutex_lock (&p->interlock); > > if (_pager_pagemap_resize (p, offset + vm_page_size)) > + goto release_out; > + > + short *pm_entry = &p->pagemap[offset / vm_page_size]; > + > + while (*pm_entry & PM_INCORE) > { > - short *pm_entry = &p->pagemap[offset / vm_page_size]; > - > - while (*pm_entry & PM_INCORE) > - { > - pthread_mutex_unlock (&p->interlock); > - pager_flush_some (p, offset, vm_page_size, 1); > - pthread_mutex_lock (&p->interlock); > - } > - *pm_entry |= PM_INCORE; > - > - memory_object_data_supply (p->memobjcntl, offset, buf, vm_page_size, 0, > - writelock ? VM_PROT_WRITE : VM_PROT_NONE, > - precious, MACH_PORT_NULL); > + pthread_mutex_unlock (&p->interlock); > + pager_flush_some (p, offset, vm_page_size, 1); > + pthread_mutex_lock (&p->interlock); > } > + *pm_entry |= PM_INCORE; > + > + memory_object_data_supply (p->memobjcntl, offset, buf, vm_page_size, 0, > + writelock ? VM_PROT_WRITE : VM_PROT_NONE, > + precious, MACH_PORT_NULL); > > + release_out: > pthread_mutex_unlock (&p->interlock); > } > -- > 2.31.1 > >