From 67035ac556007524b306caea0625ede67caa2b11 Mon Sep 17 00:00:00 2001 From: lcy1996 <992195697@qq.com> Date: Sat, 17 Nov 2018 19:18:48 +0800 Subject: [PATCH] Fix a bug in pg fault handler caused by memory_set_record --- kernel/src/memory.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/src/memory.rs b/kernel/src/memory.rs index b3d87cc..e90b048 100644 --- a/kernel/src/memory.rs +++ b/kernel/src/memory.rs @@ -111,7 +111,8 @@ pub fn page_fault_handler(addr: usize) -> bool { unsafe { ACTIVE_TABLE_SWAP.force_unlock(); } info!("active page table token in pg fault is {:x?}", ActivePageTable::token()); - let id = memory_set_record().iter() + let mmset_record = memory_set_record(); + let id = mmset_record.iter() .position(|x| unsafe{(*(x.clone() as *mut MemorySet)).get_page_table_mut().token() == ActivePageTable::token()}); /*LAB3 EXERCISE 1: YOUR STUDENT NUMBER * handle the frame deallocated @@ -119,7 +120,7 @@ pub fn page_fault_handler(addr: usize) -> bool { match id { Some(targetid) => { info!("get id from memroy set recorder."); - let mmset_ptr = memory_set_record().get(targetid).expect("fail to get mmset_ptr").clone(); + let mmset_ptr = mmset_record.get(targetid).expect("fail to get mmset_ptr").clone(); // get current mmset let current_mmset = unsafe{&mut *(mmset_ptr as *mut MemorySet)};