Skip to content

Commit 1b5fbe2

Browse files
committed
make unmap_range unsafe
1 parent 6418e8d commit 1b5fbe2

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
@@ -121,7 +121,7 @@ impl<'a> Mapper<Size1GiB> for OffsetPageTable<'a> {
121121
}
122122

123123
#[inline]
124-
fn unmap_range<D>(
124+
unsafe fn unmap_range<D>(
125125
&mut self,
126126
pages: PageRange<Size1GiB>,
127127
deallocator: &mut D,
@@ -237,7 +237,7 @@ impl<'a> Mapper<Size2MiB> for OffsetPageTable<'a> {
237237
}
238238

239239
#[inline]
240-
fn unmap_range<D>(
240+
unsafe fn unmap_range<D>(
241241
&mut self,
242242
pages: PageRange<Size2MiB>,
243243
deallocator: &mut D,
@@ -353,7 +353,7 @@ impl<'a> Mapper<Size4KiB> for OffsetPageTable<'a> {
353353
}
354354

355355
#[inline]
356-
fn unmap_range<D>(
356+
unsafe fn unmap_range<D>(
357357
&mut self,
358358
pages: PageRange<Size4KiB>,
359359
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)