From dffc8ec9fc25283b229e6bc7f627d4bb909d0e6c Mon Sep 17 00:00:00 2001
From: 4lDO2 <4lDO2@protonmail.com>
Date: Tue, 27 Jun 2023 19:55:46 +0200
Subject: [PATCH] Do not expect PageInfo for PhysMap grants.

---
 src/context/memory.rs | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/context/memory.rs b/src/context/memory.rs
index e7d5a0ba..ffc61415 100644
--- a/src/context/memory.rs
+++ b/src/context/memory.rs
@@ -777,11 +777,18 @@ impl Grant {
             };
             let frame = Frame::containing_address(phys);
 
-            let is_cow = !matches!(self.info.provider, Provider::External { .. });
+            let is_cow_opt = match self.info.provider {
+                Provider::Allocated => Some(true),
+                Provider::External { .. } => Some(false),
+                Provider::PhysBorrowed { .. } => None,
+                Provider::Fmap { .. } => todo!(),
+            };
 
-            get_page_info(frame)
-                .expect("allocated frame did not have an associated PageInfo")
-                .remove_ref(is_cow);
+            if let Some(is_cow) = is_cow_opt {
+                get_page_info(frame)
+                    .expect("allocated frame did not have an associated PageInfo")
+                    .remove_ref(is_cow);
+            }
 
 
             flusher.consume(flush);
-- 
GitLab