Skip to content

Commit 6d01dc6

Browse files
committed
[host/sandbox/{mem_access,uninit_evolve}] brought back mem_access_handler
Previously set mem_access_handler_fn to be NOOP. Brought back original functionality; albeit a bit questionable. Signed-off-by: danbugs <[email protected]>
1 parent 7563b36 commit 6d01dc6

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

src/hyperlight_host/src/sandbox/mem_access.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,33 @@ use std::sync::{Arc, Mutex};
1818

1919
use tracing::{instrument, Span};
2020

21+
use crate::error::HyperlightError::StackOverflow;
2122
#[cfg(gdb)]
2223
use crate::hypervisor::handlers::{DbgMemAccessHandlerCaller, DbgMemAccessHandlerWrapper};
2324
use crate::hypervisor::handlers::{
2425
MemAccessHandler, MemAccessHandlerFunction, MemAccessHandlerWrapper,
2526
};
26-
#[cfg(gdb)]
2727
use crate::mem::mgr::SandboxMemoryManager;
28+
use crate::mem::shared_mem::HostSharedMemory;
29+
use crate::{log_then_return, Result};
30+
31+
#[instrument(err(Debug), skip_all, parent = Span::current(), level= "Trace")]
32+
pub(super) fn handle_mem_access_impl(
33+
wrapper: &SandboxMemoryManager<HostSharedMemory>,
34+
) -> Result<()> {
35+
if !wrapper.check_stack_guard()? {
36+
log_then_return!(StackOverflow());
37+
}
38+
39+
Ok(())
40+
}
2841

2942
#[instrument(skip_all, parent = Span::current(), level= "Trace")]
30-
pub(crate) fn mem_access_handler_wrapper() -> MemAccessHandlerWrapper {
31-
// TODO(danbugs:297): fix
32-
let mem_access_func: MemAccessHandlerFunction = Box::new(move || Ok(()));
43+
pub(crate) fn mem_access_handler_wrapper(
44+
wrapper: SandboxMemoryManager<HostSharedMemory>,
45+
) -> MemAccessHandlerWrapper {
46+
let mem_access_func: MemAccessHandlerFunction =
47+
Box::new(move || handle_mem_access_impl(&wrapper));
3348
let mem_access_hdl = MemAccessHandler::from(mem_access_func);
3449
Arc::new(Mutex::new(mem_access_hdl))
3550
}

src/hyperlight_host/src/sandbox/uninitialized_evolve.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ fn hv_init(
9999
) -> Result<HypervisorHandler> {
100100
let (hshm, gshm) = shm;
101101
let outb_hdl = outb_handler_wrapper(hshm.clone(), host_funcs);
102-
let mem_access_hdl = mem_access_handler_wrapper();
102+
let mem_access_hdl = mem_access_handler_wrapper(hshm.clone());
103103
#[cfg(gdb)]
104104
let dbg_mem_access_hdl = dbg_mem_access_handler_wrapper(hshm.clone());
105105

0 commit comments

Comments
 (0)