diff options
author | Sonny Rao <sonnyrao@chromium.org> | 2018-01-31 17:49:07 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-02-01 18:08:55 -0800 |
commit | 29cd40a1d61c0d558768e0d32f07f7b7ad84ca63 (patch) | |
tree | b384a0e5d29db74de61ee5c9c17355af332bf30a /kernel_loader | |
parent | ad2391528f93e696807060f4fa6fb43faebced92 (diff) | |
download | crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.tar crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.tar.gz crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.tar.bz2 crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.tar.lz crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.tar.xz crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.tar.zst crosvm-29cd40a1d61c0d558768e0d32f07f7b7ad84ca63.zip |
crosvm: change GuestAddress to always be a u64
We want to be able to run 64-bit ARM kernels using a 32-bit version of crosvm, to make it more consistent use a u64 to represent GuestAddress. BUG=chromium:797868 TEST=./build_test passes on all architectures TEST=crosvm runs on caroline Change-Id: I43bf993592caf46891e3e5e05258ab70b6bf3045 Signed-off-by: Sonny Rao <sonnyrao@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/896398 Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'kernel_loader')
-rw-r--r-- | kernel_loader/src/lib.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel_loader/src/lib.rs b/kernel_loader/src/lib.rs index 3be9889..f9bd3bb 100644 --- a/kernel_loader/src/lib.rs +++ b/kernel_loader/src/lib.rs @@ -87,7 +87,7 @@ pub fn load_kernel<F>(guest_mem: &GuestMemory, kernel_start: GuestAddress, kerne kernel_image.seek(SeekFrom::Start(phdr.p_offset)) .map_err(|_| Error::SeekKernelStart)?; - let mem_offset = kernel_start.checked_add(phdr.p_paddr as usize) + let mem_offset = kernel_start.checked_add(phdr.p_paddr) .ok_or(Error::InvalidProgramHeaderAddress)?; guest_mem.read_to_memory(mem_offset, kernel_image, phdr.p_filesz as usize) .map_err(|_| Error::ReadKernelImage)?; @@ -109,7 +109,7 @@ pub fn load_cmdline(guest_mem: &GuestMemory, guest_addr: GuestAddress, cmdline: return Ok(()); } - let end = guest_addr.checked_add(len + 1) + let end = guest_addr.checked_add(len as u64 + 1) .ok_or(Error::CommandLineOverflow)?; // Extra for null termination. if end > guest_mem.end_addr() { return Err(Error::CommandLineOverflow)?; @@ -127,7 +127,7 @@ mod test { use super::*; use sys_util::{GuestAddress, GuestMemory}; - const MEM_SIZE: usize = 0x8000; + const MEM_SIZE: u64 = 0x8000; fn create_guest_mem() -> GuestMemory { GuestMemory::new(&vec![(GuestAddress(0x0), MEM_SIZE)]).unwrap() |