@@ -97,27 +97,14 @@ pub(crate) fn map_segment(
97
97
for frame in PhysFrame :: range_inclusive ( start_frame, end_frame) {
98
98
let offset = frame - start_frame;
99
99
let page = start_page + offset;
100
- match unsafe {
101
- map_page ( page, frame, page_table_flags, page_table, frame_allocator)
102
- } {
103
- Ok ( flusher) => flusher. flush ( ) ,
104
- Err ( MapToError :: PageAlreadyMapped ( to) ) if to == frame => {
105
- let flags = match page_table. translate ( page. start_address ( ) ) {
106
- TranslateResult :: Mapped { flags, .. } => flags,
107
- _ => unreachable ! ( ) ,
108
- } ;
109
- if flags != page_table_flags {
110
- unsafe {
111
- page_table
112
- . update_flags ( page, flags | page_table_flags)
113
- . unwrap ( )
114
- . flush ( )
115
- } ;
116
- }
117
- // nothing to do, page is already mapped to the correct frame
118
- }
119
- Err ( err) => return Err ( err) ,
120
- }
100
+ unsafe { map_page ( page, frame, page_table_flags, page_table, frame_allocator) }
101
+ . unwrap_or_else ( |err| {
102
+ panic ! (
103
+ "failed to map segment starting at {:?}: failed to map page {:?} to frame {:?}: {:?}" ,
104
+ start_page, page, frame, err
105
+ )
106
+ } )
107
+ . flush ( ) ;
121
108
}
122
109
123
110
if mem_size > file_size {
0 commit comments