diff options
author | Zach Reizner <zachr@google.com> | 2018-10-11 18:12:46 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-12 23:07:10 -0700 |
commit | 7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a (patch) | |
tree | 9e5907ddb9f2420e6bf76b2f4d9c0a17c499f8ca /src/linux.rs | |
parent | 73a40e37a338e43b33daf823a3dbb46444bfcdce (diff) | |
download | crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.tar crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.tar.gz crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.tar.bz2 crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.tar.lz crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.tar.xz crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.tar.zst crosvm-7c78a3c9484fe0cf5669fb28f9f7ec68f9b7550a.zip |
kvm: fix clippy error about multiple mut references
TEST=cargo test -p kvm BUG=None Change-Id: I2d4552b693f253f8411199ecf4583553c80e37a6 Reviewed-on: https://chromium-review.googlesource.com/1277874 Commit-Ready: Zach Reizner <zachr@chromium.org> Tested-by: Zach Reizner <zachr@chromium.org> Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r-- | src/linux.rs | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/linux.rs b/src/linux.rs index 91ea1ae..b45b956 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -668,17 +668,40 @@ fn run_vcpu( match run_res { Ok(run) => { match run { - VcpuExit::IoIn(addr, data) => { - io_bus.read(addr as u64, data); + VcpuExit::IoIn { port, mut size } => { + let mut data = [0; 8]; + if size > data.len() { + error!("unsupported IoIn size of {} bytes", size); + size = data.len(); + } + io_bus.read(port as u64, &mut data[..size]); + if let Err(e) = vcpu.set_data(&data[..size]) { + error!("failed to set return data for IoIn: {:?}", e); + } } - VcpuExit::IoOut(addr, data) => { - io_bus.write(addr as u64, data); + VcpuExit::IoOut { + port, + mut size, + data, + } => { + if size > data.len() { + error!("unsupported IoOut size of {} bytes", size); + size = data.len(); + } + io_bus.write(port as u64, &data[..size]); } - VcpuExit::MmioRead(addr, data) => { - mmio_bus.read(addr, data); + VcpuExit::MmioRead { address, mut size } => { + let mut data = [0; 8]; + mmio_bus.read(address, &mut data[..size]); + // Setting data for mmio can not fail. + let _ = vcpu.set_data(&data[..size]); } - VcpuExit::MmioWrite(addr, data) => { - mmio_bus.write(addr, data); + VcpuExit::MmioWrite { + address, + size, + data, + } => { + mmio_bus.write(address, &data[..size]); } VcpuExit::Hlt => break, VcpuExit::Shutdown => break, |