diff --git a/kernel/src/vm/address_space.rs b/kernel/src/vm/address_space.rs index 5c1683aa..46a1448d 100644 --- a/kernel/src/vm/address_space.rs +++ b/kernel/src/vm/address_space.rs @@ -802,16 +802,18 @@ impl<'a> Batch<'a> { log::trace!("flushing batch {:?} {:?}...", self.range, self.phys); let mut flush = self.arch_aspace.new_flush(); + let mut virt = self.range.start; for (phys, len) in self.phys.drain(..) { // Safety: we have checked all the invariants unsafe { self.arch_aspace.map_contiguous( - self.range.start, + virt, phys, NonZeroUsize::new(len).unwrap(), self.flags, &mut flush, )?; + virt = virt.checked_add(len).unwrap(); } } flush.flush()?;