From 2c2920572c678484cce5809cf1e55e466e89d269 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sat, 18 Nov 2023 13:24:27 +0100 Subject: [PATCH] Replace physmap with fmap. --- src/bin/mount.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/bin/mount.rs b/src/bin/mount.rs index 57bbe0480e..1a36ccdba2 100644 --- a/src/bin/mount.rs +++ b/src/bin/mount.rs @@ -75,6 +75,8 @@ fn capability_mode() { #[cfg(target_os = "redox")] fn bootloader_password() -> Option> { + use syscall::MapFlags; + let addr_env = env::var_os("REDOXFS_PASSWORD_ADDR")?; let size_env = env::var_os("REDOXFS_PASSWORD_SIZE")?; @@ -94,8 +96,16 @@ fn bootloader_password() -> Option> { unsafe { let aligned_size = size.next_multiple_of(syscall::PAGE_SIZE); - let password_map = syscall::physmap(addr, aligned_size, syscall::PhysmapFlags::empty()) - .expect("failed to map REDOXFS_PASSWORD"); + let fd = syscall::open("memory:physical", syscall::O_CLOEXEC).expect("failed to open physical memory file"); + + let password_map = syscall::fmap(fd, &syscall::Map { + offset: addr, + size: aligned_size, + flags: MapFlags::PROT_READ | MapFlags::MAP_SHARED, + address: 0, // ignored + }).expect("failed to map REDOXFS_PASSWORD"); + + let _ = syscall::close(fd); for i in 0..size { password.push(*((password_map + i) as *const u8));