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/plugin/mod.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/plugin/mod.rs')
-rw-r--r-- | src/plugin/mod.rs | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index 8cd81b4..9f229ac 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -363,17 +363,48 @@ pub fn run_vcpus( let run_res = vcpu.run(); match run_res { Ok(run) => match run { - VcpuExit::IoIn(addr, data) => { - vcpu_plugin.io_read(addr as u64, data, &vcpu); + VcpuExit::IoIn { port, mut size } => { + let mut data = [0; 8]; + if size > data.len() { + error!("unsupported IoIn size of {} bytes", size); + size = data.len(); + } + vcpu_plugin.io_read(port as u64, &mut data[..size], &vcpu); + if let Err(e) = vcpu.set_data(&data[..size]) { + error!("failed to set return data for IoIn: {:?}", e); + } } - VcpuExit::IoOut(addr, data) => { - vcpu_plugin.io_write(addr as u64, data, &vcpu); + VcpuExit::IoOut { + port, + mut size, + data, + } => { + if size > data.len() { + error!("unsupported IoOut size of {} bytes", size); + size = data.len(); + } + vcpu_plugin.io_write(port as u64, &data[..size], &vcpu); } - VcpuExit::MmioRead(addr, data) => { - vcpu_plugin.mmio_read(addr as u64, data, &vcpu); + VcpuExit::MmioRead { address, mut size } => { + let mut data = [0; 8]; + vcpu_plugin.mmio_read( + address as u64, + &mut data[..size], + &vcpu, + ); + // Setting data for mmio can not fail. + let _ = vcpu.set_data(&data[..size]); } - VcpuExit::MmioWrite(addr, data) => { - vcpu_plugin.mmio_write(addr as u64, data, &vcpu); + VcpuExit::MmioWrite { + address, + size, + data, + } => { + vcpu_plugin.mmio_write( + address as u64, + &data[..size], + &vcpu, + ); } VcpuExit::Hlt => break, VcpuExit::Shutdown => break, |