Don't allocate extra memory if already aligned

This commit is contained in:
Hui, Chunyang 2021-07-21 07:18:03 +00:00 committed by Zongmin.Gu
parent 3612442adc
commit 5963b70b97
2 changed files with 3 additions and 6 deletions

@ -108,11 +108,7 @@ impl<'a, 'b> ProcessVMBuilder<'a, 'b> {
// Now that we end up with the memory layout required by the process, // Now that we end up with the memory layout required by the process,
// let's allocate the memory for the process // let's allocate the memory for the process
let process_range = { let process_range = { USER_SPACE_VM_MANAGER.alloc(process_layout)? };
// TODO: ensure alignment through USER_SPACE_VM_MANAGER, not by
// preserving extra space for alignment
USER_SPACE_VM_MANAGER.alloc(process_layout.align() + process_layout.size())?
};
let process_base = process_range.range().start(); let process_base = process_range.range().start();
// Use the vm_manager to manage the whole process VM (including mmap region) // Use the vm_manager to manage the whole process VM (including mmap region)
let mut vm_manager = VMManager::from(process_base, process_range.range().size())?; let mut vm_manager = VMManager::from(process_base, process_range.range().size())?;

@ -16,7 +16,8 @@ impl UserSpaceVMManager {
} }
} }
pub fn alloc(&self, size: usize) -> Result<UserSpaceVMRange> { pub fn alloc(&self, vm_layout: VMLayout) -> Result<UserSpaceVMRange> {
let size = align_up(vm_layout.size(), vm_layout.align());
let vm_range = unsafe { let vm_range = unsafe {
let ptr = sgx_alloc_rsrv_mem(size); let ptr = sgx_alloc_rsrv_mem(size);
let perm = MemPerm::READ | MemPerm::WRITE; let perm = MemPerm::READ | MemPerm::WRITE;