From ab4e0d9012b4b76d05135d225be8fe2e09c1d04c Mon Sep 17 00:00:00 2001 From: Ruihan Li Date: Fri, 30 Jan 2026 11:15:20 +0800 Subject: [PATCH] Make `populate_device` infallible --- kernel/src/vm/vmar/vm_mapping.rs | 11 ++--------- kernel/src/vm/vmar/vmar_impls/map.rs | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/kernel/src/vm/vmar/vm_mapping.rs b/kernel/src/vm/vmar/vm_mapping.rs index 5fb46435f..a1995de35 100644 --- a/kernel/src/vm/vmar/vm_mapping.rs +++ b/kernel/src/vm/vmar/vm_mapping.rs @@ -188,22 +188,15 @@ impl VmMapping { /// /// In debug builds, this method panics if the mapping is not a device /// memory mapping. - pub(super) fn populate_device( - &self, - vm_space: &VmSpace, - io_mem: IoMem, - vmo_offset: usize, - ) -> Result<()> { + pub(super) fn populate_device(&self, vm_space: &VmSpace, io_mem: IoMem, vmo_offset: usize) { debug_assert!(matches!(self.mapped_mem, MappedMemory::Device)); let preempt_guard = disable_preempt(); let map_range = self.map_to_addr..self.map_to_addr + self.map_size.get(); - let mut cursor = vm_space.cursor_mut(&preempt_guard, &map_range)?; + let mut cursor = vm_space.cursor_mut(&preempt_guard, &map_range).unwrap(); let io_page_prop = PageProperty::new_user(PageFlags::from(self.perms), io_mem.cache_policy()); cursor.map_iomem(io_mem, io_page_prop, self.map_size.get(), vmo_offset); - - Ok(()) } /// Prints the mapping information in the format of `/proc/[pid]/maps`. diff --git a/kernel/src/vm/vmar/vmar_impls/map.rs b/kernel/src/vm/vmar/vmar_impls/map.rs index 7cf350f50..f8344fab2 100644 --- a/kernel/src/vm/vmar/vmar_impls/map.rs +++ b/kernel/src/vm/vmar/vmar_impls/map.rs @@ -350,7 +350,7 @@ impl<'a> VmarMapOptions<'a> { // Exchange the operation is ok since we hold the write lock on the // VMAR. if let Some(io_mem) = io_mem { - vm_mapping.populate_device(parent.vm_space(), io_mem, vmo_offset)?; + vm_mapping.populate_device(parent.vm_space(), io_mem, vmo_offset); } // Add the mapping to the VMAR.