From 85a3e6017391b2f20522a5acb3ff922a5378a36e Mon Sep 17 00:00:00 2001 From: Ludvig Liljenberg Date: Wed, 5 Mar 2025 14:01:47 -0800 Subject: [PATCH] Fix leaky stack discovered by fuzzing host functions Signed-off-by: Ludvig Liljenberg --- src/hyperlight_host/src/hypervisor/kvm.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/hyperlight_host/src/hypervisor/kvm.rs b/src/hyperlight_host/src/hypervisor/kvm.rs index a09a23943..c24b61540 100644 --- a/src/hyperlight_host/src/hypervisor/kvm.rs +++ b/src/hyperlight_host/src/hypervisor/kvm.rs @@ -746,11 +746,10 @@ impl Hypervisor for KVMDriver { hv_handler: Option, #[cfg(gdb)] dbg_mem_access_fn: DbgMemAccessHandlerWrapper, ) -> Result<()> { - // Reset general purpose registers except RSP, then set RIP - let rsp_before = self.vcpu_fd.get_regs()?.rsp; + // Reset general purpose registers, then set RIP and RSP let regs = kvm_regs { rip: dispatch_func_addr.into(), - rsp: rsp_before, + rsp: self.orig_rsp.absolute()?, ..Default::default() }; self.vcpu_fd.set_regs(®s)?; @@ -774,11 +773,6 @@ impl Hypervisor for KVMDriver { dbg_mem_access_fn, )?; - // reset RSP to what it was before function call - self.vcpu_fd.set_regs(&kvm_regs { - rsp: rsp_before, - ..Default::default() - })?; Ok(()) }