Correctly handle MAP_FIXED with a zero address

This commit is contained in:
bjorn3
2025-12-09 23:09:19 +01:00
parent 5a11067f10
commit 3bf880e008
4 changed files with 13 additions and 4 deletions
+3 -1
View File
@@ -744,7 +744,9 @@ pub fn mremap(
let addr_space = AddrSpace::current()?;
let src_span = PageSpan::new(old_base, old_size.div_ceil(PAGE_SIZE));
let new_page_count = new_size.div_ceil(PAGE_SIZE);
let requested_dst_base = Some(new_base).filter(|_| new_address != 0);
let fixed = map_flags.contains(MapFlags::MAP_FIXED)
|| map_flags.contains(MapFlags::MAP_FIXED_NOREPLACE);
let requested_dst_base = (new_address != 0 || fixed).then_some(new_base);
if mremap_flags.contains(MremapFlags::KEEP_OLD) {
// TODO: This is a hack! Find a better interface for replacing this, perhaps a capability