Skip to content

Commit b4e6e80

Browse files
authored
Remove duplicate GVA-to-GPA translation in sw breakpoint functions (#1137)
Signed-off-by: IrvingMg <mirvingr@gmail.com>
1 parent ebeaf02 commit b4e6e80

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/hyperlight_host/src/hypervisor/hyperlight_vm.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,41 +1039,37 @@ mod debug {
10391039
// Must be idempotent!
10401040
fn add_sw_breakpoint(
10411041
&mut self,
1042-
addr: u64,
1042+
gva: u64,
10431043
mem_access: &DebugMemoryAccess,
10441044
) -> crate::Result<()> {
1045-
let addr = self.vm.translate_gva(addr)?;
1046-
10471045
// Check if breakpoint already exists
1048-
if self.sw_breakpoints.contains_key(&addr) {
1046+
if self.sw_breakpoints.contains_key(&gva) {
10491047
return Ok(());
10501048
}
10511049

10521050
// Write breakpoint OP code to write to guest memory
10531051
let mut save_data = [0; SW_BP_SIZE];
1054-
self.read_addrs(addr, &mut save_data[..], mem_access)?;
1055-
self.write_addrs(addr, &SW_BP, mem_access)?;
1052+
self.read_addrs(gva, &mut save_data[..], mem_access)?;
1053+
self.write_addrs(gva, &SW_BP, mem_access)?;
10561054

10571055
// Save guest memory to restore when breakpoint is removed
1058-
self.sw_breakpoints.insert(addr, save_data[0]);
1056+
self.sw_breakpoints.insert(gva, save_data[0]);
10591057

10601058
Ok(())
10611059
}
10621060

10631061
fn remove_sw_breakpoint(
10641062
&mut self,
1065-
addr: u64,
1063+
gva: u64,
10661064
mem_access: &DebugMemoryAccess,
10671065
) -> crate::Result<()> {
1068-
let addr = self.vm.translate_gva(addr)?;
1069-
1070-
if let Some(saved_data) = self.sw_breakpoints.remove(&addr) {
1066+
if let Some(saved_data) = self.sw_breakpoints.remove(&gva) {
10711067
// Restore saved data to the guest's memory
1072-
self.write_addrs(addr, &[saved_data], mem_access)?;
1068+
self.write_addrs(gva, &[saved_data], mem_access)?;
10731069

10741070
Ok(())
10751071
} else {
1076-
Err(new_error!("The address: {:?} is not a sw breakpoint", addr))
1072+
Err(new_error!("The address: {:?} is not a sw breakpoint", gva))
10771073
}
10781074
}
10791075
}

0 commit comments

Comments
 (0)