Skip to content

Commit 1f6ce05

Browse files
committed
make unmap_range unsafe
1 parent 6ffad4a commit 1f6ce05

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
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
@@ -444,7 +444,11 @@ pub trait Mapper<S: PageSize> {
444444
///
445445
/// ## Errors
446446
/// If an error occurs half-way through a [`MapperFlushRange<S>`] is returned that contains the pages that were successfully unmapped.
447-
fn unmap_range<D>(
447+
///
448+
/// ## Safety
449+
/// The caller has to guarantee that it's safe to deallocate frames:
450+
/// All unmapped frames must only be only in this page table.
451+
unsafe fn unmap_range<D>(
448452
&mut self,
449453
pages: PageRange<S>,
450454
deallocator: &mut D,

src/structures/paging/mapper/offset_page_table.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,15 @@ impl<'a> Mapper<Size1GiB> for OffsetPageTable<'a> {
127127
}
128128

129129
#[inline]
130-
fn unmap_range<D>(
130+
unsafe fn unmap_range<D>(
131131
&mut self,
132132
pages: PageRange<Size1GiB>,
133133
deallocator: &mut D,
134134
) -> Result<MapperFlushRange<Size1GiB>, (UnmapError, MapperFlushRange<Size1GiB>)>
135135
where
136136
D: FrameDeallocator<Size1GiB>,
137137
{
138-
self.inner.unmap_range(pages, deallocator)
138+
unsafe { self.inner.unmap_range(pages, deallocator) }
139139
}
140140

141141
#[inline]
@@ -249,15 +249,15 @@ impl<'a> Mapper<Size2MiB> for OffsetPageTable<'a> {
249249
}
250250

251251
#[inline]
252-
fn unmap_range<D>(
252+
unsafe fn unmap_range<D>(
253253
&mut self,
254254
pages: PageRange<Size2MiB>,
255255
deallocator: &mut D,
256256
) -> Result<MapperFlushRange<Size2MiB>, (UnmapError, MapperFlushRange<Size2MiB>)>
257257
where
258258
D: FrameDeallocator<Size2MiB>,
259259
{
260-
self.inner.unmap_range(pages, deallocator)
260+
unsafe { self.inner.unmap_range(pages, deallocator) }
261261
}
262262

263263
#[inline]
@@ -371,15 +371,15 @@ impl<'a> Mapper<Size4KiB> for OffsetPageTable<'a> {
371371
}
372372

373373
#[inline]
374-
fn unmap_range<D>(
374+
unsafe fn unmap_range<D>(
375375
&mut self,
376376
pages: PageRange<Size4KiB>,
377377
deallocator: &mut D,
378378
) -> Result<MapperFlushRange<Size4KiB>, (UnmapError, MapperFlushRange<Size4KiB>)>
379379
where
380380
D: FrameDeallocator<Size4KiB>,
381381
{
382-
self.inner.unmap_range(pages, deallocator)
382+
unsafe { self.inner.unmap_range(pages, deallocator) }
383383
}
384384

385385
#[inline]

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)