diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-05-22 01:18:42 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-05-22 01:18:42 +0000 |
commit | 460406d10bbfaa890d56d616b4610813da63a312 (patch) | |
tree | 889af76de40dfca7228a22a38f6b65b9562946f9 /vm_control | |
parent | eb223862bd19827cc15d74b8af75b8c45a79b4d0 (diff) | |
parent | 56520c27224579640da9d3e8e4964b0f27dc9bdc (diff) | |
download | crosvm-460406d10bbfaa890d56d616b4610813da63a312.tar crosvm-460406d10bbfaa890d56d616b4610813da63a312.tar.gz crosvm-460406d10bbfaa890d56d616b4610813da63a312.tar.bz2 crosvm-460406d10bbfaa890d56d616b4610813da63a312.tar.lz crosvm-460406d10bbfaa890d56d616b4610813da63a312.tar.xz crosvm-460406d10bbfaa890d56d616b4610813da63a312.tar.zst crosvm-460406d10bbfaa890d56d616b4610813da63a312.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'vm_control')
-rw-r--r-- | vm_control/src/lib.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/vm_control/src/lib.rs b/vm_control/src/lib.rs index a1d2964..a995f3a 100644 --- a/vm_control/src/lib.rs +++ b/vm_control/src/lib.rs @@ -19,7 +19,7 @@ use std::os::unix::io::{AsRawFd, FromRawFd, RawFd}; use libc::{EINVAL, EIO, ENODEV}; use kvm::{IrqRoute, IrqSource, Vm}; -use msg_socket::{MsgOnSocket, MsgReceiver, MsgResult, MsgSender, MsgSocket}; +use msg_socket::{MsgError, MsgOnSocket, MsgReceiver, MsgResult, MsgSender, MsgSocket}; use resources::{Alloc, GpuMemoryDesc, MmioType, SystemAllocator}; use sys_util::{error, Error as SysError, EventFd, GuestAddress, MemoryMapping, MmapError, Result}; @@ -53,13 +53,16 @@ impl MsgOnSocket for MaybeOwnedFd { 1usize } unsafe fn read_from_buffer(buffer: &[u8], fds: &[RawFd]) -> MsgResult<(Self, usize)> { - let (fd, size) = RawFd::read_from_buffer(buffer, fds)?; - let file = File::from_raw_fd(fd); + let (file, size) = File::read_from_buffer(buffer, fds)?; Ok((MaybeOwnedFd::Owned(file), size)) } - fn write_to_buffer(&self, buffer: &mut [u8], fds: &mut [RawFd]) -> MsgResult<usize> { - let fd = self.as_raw_fd(); - fd.write_to_buffer(buffer, fds) + fn write_to_buffer(&self, _buffer: &mut [u8], fds: &mut [RawFd]) -> MsgResult<usize> { + if fds.is_empty() { + return Err(MsgError::WrongFdBufferSize); + } + + fds[0] = self.as_raw_fd(); + Ok(1) } } |