Thanks!! Great job!! El lun, 2 dic 2024 a las 19:44, Samuel Thibault (<samuel.thiba...@gnu.org>) escribió:
> Applied, thanks! > > Etienne Brateau, le lun. 02 déc. 2024 19:27:17 +0100, a ecrit: > > the call vm_page_seg_pull_cache_page() return an vm_page (src) with his > > object being locked, as we don’t unlock before doing the vm_page_insert, > > it is still lock there, and so trying to relock it cause a deadlock. > > Replace this lock by an assert. > > This case was not seen as for non-smp locking is a no-op. > > --- > > vm/vm_page.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/vm/vm_page.c b/vm/vm_page.c > > index 286fe62f..e329354f 100644 > > --- a/vm/vm_page.c > > +++ b/vm/vm_page.c > > @@ -1036,7 +1036,8 @@ vm_page_seg_balance_page(struct vm_page_seg *seg, > > simple_unlock(&seg->lock); > > simple_unlock(&vm_page_queue_free_lock); > > > > - vm_object_lock(object); > > + // object is already locked as vm_page_seg_alloc_from_buddy return > it locked > > + assert(vm_object_lock_taken(src->object) != 0); > > vm_page_insert(dest, object, offset); > > vm_object_unlock(object); > > > > -- > > 2.47.0 > > > > > >