From 5963b70b97a9ba9d80863180f0f635ddd52e871f Mon Sep 17 00:00:00 2001 From: "Hui, Chunyang" Date: Wed, 21 Jul 2021 07:18:03 +0000 Subject: [PATCH] Don't allocate extra memory if already aligned --- src/libos/src/vm/process_vm.rs | 6 +----- src/libos/src/vm/user_space_vm.rs | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/libos/src/vm/process_vm.rs b/src/libos/src/vm/process_vm.rs index 3887ef78..adde03a2 100644 --- a/src/libos/src/vm/process_vm.rs +++ b/src/libos/src/vm/process_vm.rs @@ -108,11 +108,7 @@ impl<'a, 'b> ProcessVMBuilder<'a, 'b> { // Now that we end up with the memory layout required by the process, // let's allocate the memory for the process - let process_range = { - // 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_range = { USER_SPACE_VM_MANAGER.alloc(process_layout)? }; let process_base = process_range.range().start(); // 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())?; diff --git a/src/libos/src/vm/user_space_vm.rs b/src/libos/src/vm/user_space_vm.rs index 7e01a1c5..c2466ff0 100644 --- a/src/libos/src/vm/user_space_vm.rs +++ b/src/libos/src/vm/user_space_vm.rs @@ -16,7 +16,8 @@ impl UserSpaceVMManager { } } - pub fn alloc(&self, size: usize) -> Result { + pub fn alloc(&self, vm_layout: VMLayout) -> Result { + let size = align_up(vm_layout.size(), vm_layout.align()); let vm_range = unsafe { let ptr = sgx_alloc_rsrv_mem(size); let perm = MemPerm::READ | MemPerm::WRITE;