Skip to content

Commit 6698c2e

Browse files
committed
Make UninitializedSandbox::new take guest binary by references instead of value
Signed-off-by: Ludvig Liljenberg <[email protected]>
1 parent 02fd693 commit 6698c2e

File tree

25 files changed

+71
-61
lines changed

25 files changed

+71
-61
lines changed

fuzz/fuzz_targets/guest_call.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fuzz_target!(
3333
init: {
3434

3535
let u_sbox = UninitializedSandbox::new(
36-
GuestBinary::FilePath(simple_guest_for_fuzzing_as_string().expect("Guest Binary Missing")),
36+
&GuestBinary::FilePath(simple_guest_for_fuzzing_as_string().expect("Guest Binary Missing")),
3737
None,
3838
)
3939
.unwrap();

fuzz/fuzz_targets/host_call.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ static SANDBOX: OnceLock<Mutex<MultiUseSandbox>> = OnceLock::new();
3232
fuzz_target!(
3333
init: {
3434
let u_sbox = UninitializedSandbox::new(
35-
GuestBinary::FilePath(simple_guest_for_fuzzing_as_string().expect("Guest Binary Missing")),
35+
&GuestBinary::FilePath(simple_guest_for_fuzzing_as_string().expect("Guest Binary Missing")),
3636
None
3737
)
3838
.unwrap();

fuzz/fuzz_targets/host_print.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ static SANDBOX: OnceLock<Mutex<MultiUseSandbox>> = OnceLock::new();
1818
fuzz_target!(
1919
init: {
2020
let u_sbox = UninitializedSandbox::new(
21-
GuestBinary::FilePath(simple_guest_for_fuzzing_as_string().expect("Guest Binary Missing")),
21+
&GuestBinary::FilePath(simple_guest_for_fuzzing_as_string().expect("Guest Binary Missing")),
2222
None,
2323
)
2424
.unwrap();

src/hyperlight_guest/src/guest_handle/handle.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ pub struct GuestHandle {
3030
peb: Option<*mut HyperlightPEB>,
3131
}
3232

33+
impl Default for GuestHandle {
34+
fn default() -> Self {
35+
Self::new()
36+
}
37+
}
38+
3339
impl GuestHandle {
3440
/// Creates a new uninitialized guest state.
3541
pub const fn new() -> Self {

src/hyperlight_guest/src/guest_handle/host_comm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ impl GuestHandle {
102102
/// Write an error to the shared output data buffer.
103103
pub fn write_error(&self, error_code: ErrorCode, message: Option<&str>) {
104104
let guest_error: GuestError = GuestError::new(
105-
error_code.clone(),
105+
error_code,
106106
message.map_or("".to_string(), |m| m.to_string()),
107107
);
108108
let guest_error_buffer: Vec<u8> = (&guest_error)

src/hyperlight_host/benches/benchmarks.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ use hyperlight_testing::simple_guest_as_string;
2323

2424
fn create_uninit_sandbox() -> UninitializedSandbox {
2525
let path = simple_guest_as_string().unwrap();
26-
UninitializedSandbox::new(GuestBinary::FilePath(path), None).unwrap()
26+
let binary = GuestBinary::FilePath(path);
27+
UninitializedSandbox::new(&binary, None).unwrap()
2728
}
2829

2930
fn create_multiuse_sandbox() -> MultiUseSandbox {
@@ -68,7 +69,7 @@ fn guest_call_benchmark(c: &mut Criterion) {
6869
config.set_heap_size(SIZE as u64 * 15);
6970

7071
let sandbox = UninitializedSandbox::new(
71-
GuestBinary::FilePath(simple_guest_as_string().unwrap()),
72+
&GuestBinary::FilePath(simple_guest_as_string().unwrap()),
7273
Some(config),
7374
)
7475
.unwrap();

src/hyperlight_host/examples/func_ctx/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fn main() {
2626
// test guest binary
2727
let sbox1: MultiUseSandbox = {
2828
let path = simple_guest_as_string().unwrap();
29-
let u_sbox = UninitializedSandbox::new(GuestBinary::FilePath(path), None).unwrap();
29+
let u_sbox = UninitializedSandbox::new(&GuestBinary::FilePath(path), None).unwrap();
3030
u_sbox.evolve(Noop::default())
3131
}
3232
.unwrap();

src/hyperlight_host/examples/guest-debugging/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn main() -> hyperlight_host::Result<()> {
4343

4444
// Create an uninitialized sandbox with a guest binary
4545
let mut uninitialized_sandbox = UninitializedSandbox::new(
46-
hyperlight_host::GuestBinary::FilePath(
46+
&hyperlight_host::GuestBinary::FilePath(
4747
hyperlight_testing::simple_guest_as_string().unwrap(),
4848
),
4949
cfg, // sandbox configuration

src/hyperlight_host/examples/hello-world/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use hyperlight_host::{MultiUseSandbox, UninitializedSandbox};
2323
fn main() -> hyperlight_host::Result<()> {
2424
// Create an uninitialized sandbox with a guest binary
2525
let mut uninitialized_sandbox = UninitializedSandbox::new(
26-
hyperlight_host::GuestBinary::FilePath(
26+
&hyperlight_host::GuestBinary::FilePath(
2727
hyperlight_testing::simple_guest_as_string().unwrap(),
2828
),
2929
None, // default configuration

src/hyperlight_host/examples/logging/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn main() -> Result<()> {
4343
let path = hyperlight_guest_path.clone();
4444
let res: Result<()> = {
4545
// Create a new sandbox.
46-
let mut usandbox = UninitializedSandbox::new(GuestBinary::FilePath(path), None)?;
46+
let mut usandbox = UninitializedSandbox::new(&GuestBinary::FilePath(path), None)?;
4747
usandbox.register_print(fn_writer)?;
4848

4949
// Initialize the sandbox.
@@ -77,7 +77,7 @@ fn main() -> Result<()> {
7777

7878
// Create a new sandbox.
7979
let usandbox =
80-
UninitializedSandbox::new(GuestBinary::FilePath(hyperlight_guest_path.clone()), None)?;
80+
UninitializedSandbox::new(&GuestBinary::FilePath(hyperlight_guest_path.clone()), None)?;
8181

8282
// Initialize the sandbox.
8383

src/hyperlight_host/examples/metrics/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ fn do_hyperlight_stuff() {
5454
let path = hyperlight_guest_path.clone();
5555
let handle = spawn(move || -> Result<()> {
5656
// Create a new sandbox.
57-
let mut usandbox = UninitializedSandbox::new(GuestBinary::FilePath(path), None)?;
57+
let mut usandbox = UninitializedSandbox::new(&GuestBinary::FilePath(path), None)?;
5858
usandbox.register_print(fn_writer)?;
5959

6060
// Initialize the sandbox.
@@ -88,7 +88,7 @@ fn do_hyperlight_stuff() {
8888

8989
// Create a new sandbox.
9090
let usandbox =
91-
UninitializedSandbox::new(GuestBinary::FilePath(hyperlight_guest_path.clone()), None)
91+
UninitializedSandbox::new(&GuestBinary::FilePath(hyperlight_guest_path.clone()), None)
9292
.expect("Failed to create UninitializedSandbox");
9393

9494
// Initialize the sandbox.

src/hyperlight_host/examples/tracing-chrome/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fn main() -> Result<()> {
3232
simple_guest_as_string().expect("Cannot find the guest binary at the expected location.");
3333

3434
// Create a new sandbox.
35-
let usandbox = UninitializedSandbox::new(GuestBinary::FilePath(simple_guest_path), None)?;
35+
let usandbox = UninitializedSandbox::new(&GuestBinary::FilePath(simple_guest_path), None)?;
3636

3737
let mut sbox = usandbox
3838
.evolve(Noop::<UninitializedSandbox, MultiUseSandbox>::default())

src/hyperlight_host/examples/tracing-otlp/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ fn run_example(wait_input: bool) -> HyperlightResult<()> {
128128

129129
// Create a new sandbox.
130130
let mut usandbox =
131-
UninitializedSandbox::new(GuestBinary::FilePath(path.clone()), None)?;
131+
UninitializedSandbox::new(&GuestBinary::FilePath(path.clone()), None)?;
132132
usandbox.register_print(fn_writer)?;
133133

134134
// Initialize the sandbox.

src/hyperlight_host/examples/tracing-tracy/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ fn main() -> Result<()> {
3838
simple_guest_as_string().expect("Cannot find the guest binary at the expected location.");
3939

4040
// Create a new sandbox.
41-
let usandbox = UninitializedSandbox::new(GuestBinary::FilePath(simple_guest_path), None)?;
41+
let usandbox = UninitializedSandbox::new(&GuestBinary::FilePath(simple_guest_path), None)?;
4242

4343
let mut sbox = usandbox
4444
.evolve(Noop::<UninitializedSandbox, MultiUseSandbox>::default())

src/hyperlight_host/examples/tracing/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fn run_example() -> Result<()> {
7171
let _entered = span.enter();
7272

7373
// Create a new sandbox.
74-
let mut usandbox = UninitializedSandbox::new(GuestBinary::FilePath(path), None)?;
74+
let mut usandbox = UninitializedSandbox::new(&GuestBinary::FilePath(path), None)?;
7575
usandbox.register_print(fn_writer)?;
7676

7777
// Initialize the sandbox.
@@ -104,7 +104,7 @@ fn run_example() -> Result<()> {
104104

105105
// Create a new sandbox.
106106
let usandbox =
107-
UninitializedSandbox::new(GuestBinary::FilePath(hyperlight_guest_path.clone()), None)?;
107+
UninitializedSandbox::new(&GuestBinary::FilePath(hyperlight_guest_path.clone()), None)?;
108108

109109
// Initialize the sandbox.
110110

src/hyperlight_host/src/func/call_ctx.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ mod tests {
116116
let path = simple_guest_as_string().map_err(|e| {
117117
HyperlightError::Error(format!("failed to get simple guest path ({e:?})"))
118118
})?;
119-
UninitializedSandbox::new(GuestBinary::FilePath(path), None)
119+
UninitializedSandbox::new(&GuestBinary::FilePath(path), None)
120120
}
121121

122122
/// Test to create a `MultiUseSandbox`, then call several guest functions

src/hyperlight_host/src/hypervisor/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ pub(crate) mod tests {
499499

500500
let config: SandboxConfiguration = Default::default();
501501
let sandbox =
502-
UninitializedSandbox::new(GuestBinary::FilePath(filename.clone()), Some(config))?;
502+
UninitializedSandbox::new(&GuestBinary::FilePath(filename.clone()), Some(config))?;
503503
let (_hshm, mut gshm) = sandbox.mgr.build();
504504
let mut vm = set_up_hypervisor_partition(&mut gshm, &config)?;
505505
vm.initialise(

src/hyperlight_host/src/metrics/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ mod tests {
103103
let snapshotter = recorder.snapshotter();
104104
let snapshot = with_local_recorder(&recorder, || {
105105
let uninit = UninitializedSandbox::new(
106-
GuestBinary::FilePath(simple_guest_as_string().unwrap()),
106+
&GuestBinary::FilePath(simple_guest_as_string().unwrap()),
107107
None,
108108
)
109109
.unwrap();

src/hyperlight_host/src/sandbox/initialized_multi_use.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,8 @@ mod tests {
336336

337337
let sbox1: MultiUseSandbox = {
338338
let path = simple_guest_as_string().unwrap();
339-
let u_sbox = UninitializedSandbox::new(GuestBinary::FilePath(path), Some(cfg)).unwrap();
339+
let u_sbox =
340+
UninitializedSandbox::new(&GuestBinary::FilePath(path), Some(cfg)).unwrap();
340341
u_sbox.evolve(Noop::default())
341342
}
342343
.unwrap();
@@ -349,7 +350,8 @@ mod tests {
349350

350351
let sbox2: MultiUseSandbox = {
351352
let path = simple_guest_as_string().unwrap();
352-
let u_sbox = UninitializedSandbox::new(GuestBinary::FilePath(path), Some(cfg)).unwrap();
353+
let u_sbox =
354+
UninitializedSandbox::new(&GuestBinary::FilePath(path), Some(cfg)).unwrap();
353355
u_sbox.evolve(Noop::default())
354356
}
355357
.unwrap();
@@ -371,7 +373,7 @@ mod tests {
371373
fn evolve_devolve_handles_state_correctly() {
372374
let sbox1: MultiUseSandbox = {
373375
let path = simple_guest_as_string().unwrap();
374-
let u_sbox = UninitializedSandbox::new(GuestBinary::FilePath(path), None).unwrap();
376+
let u_sbox = UninitializedSandbox::new(&GuestBinary::FilePath(path), None).unwrap();
375377
u_sbox.evolve(Noop::default())
376378
}
377379
.unwrap();
@@ -402,7 +404,7 @@ mod tests {
402404
// First, run to make sure it fails.
403405
{
404406
let mut usbox = UninitializedSandbox::new(
405-
GuestBinary::FilePath(simple_guest_as_string().expect("Guest Binary Missing")),
407+
&GuestBinary::FilePath(simple_guest_as_string().expect("Guest Binary Missing")),
406408
None,
407409
)
408410
.unwrap();
@@ -433,7 +435,7 @@ mod tests {
433435
#[cfg(feature = "seccomp")]
434436
{
435437
let mut usbox = UninitializedSandbox::new(
436-
GuestBinary::FilePath(simple_guest_as_string().expect("Guest Binary Missing")),
438+
&GuestBinary::FilePath(simple_guest_as_string().expect("Guest Binary Missing")),
437439
None,
438440
)
439441
.unwrap();
@@ -461,7 +463,7 @@ mod tests {
461463
#[test]
462464
fn test_trigger_exception_on_guest() {
463465
let usbox = UninitializedSandbox::new(
464-
GuestBinary::FilePath(simple_guest_as_string().expect("Guest Binary Missing")),
466+
&GuestBinary::FilePath(simple_guest_as_string().expect("Guest Binary Missing")),
465467
None,
466468
)
467469
.unwrap();
@@ -499,7 +501,7 @@ mod tests {
499501

500502
for _ in 0..50 {
501503
let usbox = UninitializedSandbox::new(
502-
GuestBinary::FilePath(
504+
&GuestBinary::FilePath(
503505
simple_guest_as_string().expect("Guest Binary Missing"),
504506
),
505507
None,

src/hyperlight_host/src/sandbox/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ mod tests {
127127
for i in 0..10 {
128128
let simple_guest_path = simple_guest_as_string().expect("Guest Binary Missing");
129129
let unintializedsandbox =
130-
UninitializedSandbox::new(GuestBinary::FilePath(simple_guest_path), None)
130+
UninitializedSandbox::new(&GuestBinary::FilePath(simple_guest_path), None)
131131
.unwrap_or_else(|_| panic!("Failed to create UninitializedSandbox {}", i));
132132

133133
unintializedsandbox_queue

0 commit comments

Comments
 (0)