Skip to content

Commit f3be780

Browse files
committed
make unmap_range unsafe
1 parent c569d11 commit f3be780

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

src/structures/paging/mapper/mapped_page_table.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ impl<'a, P: PageTableFrameMapping> Mapper<Size1GiB> for MappedPageTable<'a, P> {
645645
}
646646

647647
#[inline]
648-
fn unmap_range<D>(
648+
unsafe fn unmap_range<D>(
649649
&mut self,
650650
pages: PageRange<Size1GiB>,
651651
deallocator: &mut D,
@@ -850,7 +850,7 @@ impl<'a, P: PageTableFrameMapping> Mapper<Size2MiB> for MappedPageTable<'a, P> {
850850
}
851851

852852
#[inline]
853-
fn unmap_range<D>(
853+
unsafe fn unmap_range<D>(
854854
&mut self,
855855
pages: PageRange<Size2MiB>,
856856
deallocator: &mut D,
@@ -1068,7 +1068,7 @@ impl<'a, P: PageTableFrameMapping> Mapper<Size4KiB> for MappedPageTable<'a, P> {
10681068
}
10691069

10701070
#[inline]
1071-
fn unmap_range<D>(
1071+
unsafe fn unmap_range<D>(
10721072
&mut self,
10731073
pages: PageRange<Size4KiB>,
10741074
deallocator: &mut D,

src/structures/paging/mapper/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,11 @@ pub trait Mapper<S: PageSize> {
436436
///
437437
/// ## Errors
438438
/// If an error occurs half-way through a [`MapperFlushRange<S>`] is returned that contains the pages that were successfully unmapped.
439-
fn unmap_range<D>(
439+
///
440+
/// ## Safety
441+
/// The caller has to guarantee that it's safe to deallocate frames:
442+
/// All unmapped frames must only be only in this page table.
443+
unsafe fn unmap_range<D>(
440444
&mut self,
441445
pages: PageRange<S>,
442446
deallocator: &mut D,

src/structures/paging/mapper/offset_page_table.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ impl<'a> Mapper<Size1GiB> for OffsetPageTable<'a> {
120120
}
121121

122122
#[inline]
123-
fn unmap_range<D>(
123+
unsafe fn unmap_range<D>(
124124
&mut self,
125125
pages: PageRange<Size1GiB>,
126126
deallocator: &mut D,
@@ -236,7 +236,7 @@ impl<'a> Mapper<Size2MiB> for OffsetPageTable<'a> {
236236
}
237237

238238
#[inline]
239-
fn unmap_range<D>(
239+
unsafe fn unmap_range<D>(
240240
&mut self,
241241
pages: PageRange<Size2MiB>,
242242
deallocator: &mut D,
@@ -352,7 +352,7 @@ impl<'a> Mapper<Size4KiB> for OffsetPageTable<'a> {
352352
}
353353

354354
#[inline]
355-
fn unmap_range<D>(
355+
unsafe fn unmap_range<D>(
356356
&mut self,
357357
pages: PageRange<Size4KiB>,
358358
deallocator: &mut D,

src/structures/paging/mapper/recursive_page_table.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,7 @@ impl<'a> Mapper<Size1GiB> for RecursivePageTable<'a> {
818818
}
819819

820820
#[inline]
821-
fn unmap_range<D>(
821+
unsafe fn unmap_range<D>(
822822
&mut self,
823823
pages: PageRange<Size1GiB>,
824824
deallocator: &mut D,
@@ -1040,7 +1040,7 @@ impl<'a> Mapper<Size2MiB> for RecursivePageTable<'a> {
10401040
}
10411041

10421042
#[inline]
1043-
fn unmap_range<D>(
1043+
unsafe fn unmap_range<D>(
10441044
&mut self,
10451045
pages: PageRange<Size2MiB>,
10461046
deallocator: &mut D,
@@ -1291,7 +1291,7 @@ impl<'a> Mapper<Size4KiB> for RecursivePageTable<'a> {
12911291
}
12921292

12931293
#[inline]
1294-
fn unmap_range<D>(
1294+
unsafe fn unmap_range<D>(
12951295
&mut self,
12961296
pages: PageRange<Size4KiB>,
12971297
deallocator: &mut D,

0 commit comments

Comments
 (0)