Fix panic in mprotect when merging adjacent mappings

This commit is contained in:
Marsman1996 2026-01-29 19:20:40 +08:00
parent 6d2ff13a63
commit e672ccd940
1 changed files with 6 additions and 1 deletions

View File

@ -43,7 +43,12 @@ impl Vmar {
let new_perms = perms | (vm_mapping_perms & VmPerms::ALL_MAY_PERMS); let new_perms = perms | (vm_mapping_perms & VmPerms::ALL_MAY_PERMS);
new_perms.check()?; new_perms.check()?;
let vm_mapping = inner.remove(&vm_mapping_range.start).unwrap(); let Some(vm_mapping) = inner.remove(&vm_mapping_range.start) else {
// This can happen only if the mapping is merged to the previous one (just
// protected before). We can skip this mapping because its property is already
// correct.
continue;
};
let vm_mapping_range = vm_mapping.range(); let vm_mapping_range = vm_mapping.range();
let intersected_range = get_intersected_range(&range, &vm_mapping_range); let intersected_range = get_intersected_range(&range, &vm_mapping_range);