diff options
author | Dmitry Torokhov <dtor@chromium.org> | 2018-02-27 10:26:34 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-02-27 20:17:06 -0800 |
commit | 5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8 (patch) | |
tree | df20f0d741a6995cff656c55d9515b03b0c4b8f6 /crosvm_plugin/src | |
parent | cda18d757b0f9bb67af649bca9c9f13b73e56afc (diff) | |
download | crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.tar crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.tar.gz crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.tar.bz2 crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.tar.lz crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.tar.xz crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.tar.zst crosvm-5ba068f9a4d86a8f976aca3e3f70ed16a3e1d4d8.zip |
crosvm_plugin: fix errno conversions
The raw_os_error() and errno() return positive values (errno values are all positive), but the rest of crosvm plugin C API works with negative return codes, so we need to convert raw_os_error()/errno() into negatives as well. TEST=cargo test --features plugin; cargo test -p kvm BUG=None Change-Id: I8bd72c2e67cb227a638e5c9478cd2f781f0783d0 Signed-off-by: Dmitry Torokhov <dtor@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/939865 Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'crosvm_plugin/src')
-rw-r--r-- | crosvm_plugin/src/lib.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/crosvm_plugin/src/lib.rs b/crosvm_plugin/src/lib.rs index bfb9287..6f56341 100644 --- a/crosvm_plugin/src/lib.rs +++ b/crosvm_plugin/src/lib.rs @@ -90,7 +90,7 @@ pub struct crosvm_irq_route { fn proto_error_to_int(e: protobuf::ProtobufError) -> c_int { match e { - protobuf::ProtobufError::IoError(e) => e.raw_os_error().unwrap_or(-EINVAL), + protobuf::ProtobufError::IoError(e) => -e.raw_os_error().unwrap_or(EINVAL), _ => -EINVAL, } } @@ -165,14 +165,14 @@ impl crosvm { .map_err(proto_error_to_int)?; self.fd_messager .send(&self.socket, &[self.request_buffer.as_slice()], fds) - .map_err(|e| e.errno())?; + .map_err(|e| -e.errno())?; let mut datagram_files = Vec::new(); let msg_size = self.fd_messager .recv(&self.socket, &mut [&mut self.response_buffer], &mut datagram_files) - .map_err(|e| e.errno())?; + .map_err(|e| -e.errno())?; let response: MainResponse = parse_from_bytes(&self.response_buffer[..msg_size]) .map_err(proto_error_to_int)?; @@ -615,11 +615,11 @@ impl crosvm_vcpu { .map_err(proto_error_to_int)?; self.socket .send(self.request_buffer.as_slice()) - .map_err(|e| e.raw_os_error().unwrap_or(-EINVAL))?; + .map_err(|e| -e.raw_os_error().unwrap_or(EINVAL))?; let msg_size = self.socket .recv(&mut self.response_buffer) - .map_err(|e| e.raw_os_error().unwrap_or(-EINVAL))?; + .map_err(|e| -e.raw_os_error().unwrap_or(EINVAL))?; let response: VcpuResponse = parse_from_bytes(&self.response_buffer[..msg_size]) .map_err(proto_error_to_int)?; |