From af9104c3e6b6693e0f5e39361048b572c7031794 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Wed, 15 May 2024 05:24:03 +0000 Subject: fix collapse bug --- kernel/vm/shadow.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/vm/shadow.c b/kernel/vm/shadow.c index 77adef7..2f875d6 100644 --- a/kernel/vm/shadow.c +++ b/kernel/vm/shadow.c @@ -133,7 +133,7 @@ void shadow_collapse(mobj_t *o) } // migrate the pframes from o's shadowed object to o - // mobj_lock(next); // lock before iterover + mobj_lock(next); // lock before iterover list_iterate(&next->mo_pframes, pf, pframe_t, pf_link) { // see if shadow pframe is in the current shadow object @@ -159,11 +159,13 @@ void shadow_collapse(mobj_t *o) so->shadowed = MOBJ_TO_SO(next)->shadowed; // update the refcounts + mobj_lock(so->shadowed); mobj_ref(so->shadowed); - mobj_put(&next); // "remove" the next + mobj_put_locked(&next); // "remove" the next // update next for next iter, now that it's removed next = so->shadowed; + mobj_unlock(next); } } -- cgit v1.2.3-70-g09d2