summary refs log tree commit diff
path: root/devices
diff options
context:
space:
mode:
authorRyo Hashimoto <hashimoto@google.com>2020-04-15 17:09:54 +0900
committerCommit Bot <commit-bot@chromium.org>2020-04-16 04:53:32 +0000
commite17b2b9059e38ba2d76b542949d89b4d26d837f9 (patch)
tree430edd85e0302bbe9a70648755fd44423a379180 /devices
parent40af8ee7482daa49f775963c983fbfc1afeb2006 (diff)
downloadcrosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.tar
crosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.tar.gz
crosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.tar.bz2
crosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.tar.lz
crosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.tar.xz
crosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.tar.zst
crosvm-e17b2b9059e38ba2d76b542949d89b4d26d837f9.zip
devices: virtio: wl: Stop using non-blocking sockets
Non-blocking sockets require proper EAGAIN handling in crosvm and the
guest kernel.
Without it, guest writing data faster than host reading results in the
guest kernel returning ENODEV.

Use blocking sockets to avoid this problem, and to be consistent with
pipes which are blocking in wl.rs.

BUG=b:153858766
TEST=Launch ARCVM

Change-Id: If795ee0035dc057de0e155470e231d41f30d3a0e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2148985
Tested-by: Ryo Hashimoto <hashimoto@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Commit-Queue: Ryo Hashimoto <hashimoto@chromium.org>
Diffstat (limited to 'devices')
-rw-r--r--devices/src/virtio/wl.rs3
1 files changed, 0 insertions, 3 deletions
diff --git a/devices/src/virtio/wl.rs b/devices/src/virtio/wl.rs
index 65ad1cf..d59a801 100644
--- a/devices/src/virtio/wl.rs
+++ b/devices/src/virtio/wl.rs
@@ -546,9 +546,6 @@ impl fmt::Debug for WlVfd {
 impl WlVfd {
     fn connect<P: AsRef<Path>>(path: P) -> WlResult<WlVfd> {
         let socket = UnixStream::connect(path).map_err(WlError::SocketConnect)?;
-        socket
-            .set_nonblocking(true)
-            .map_err(WlError::SocketNonBlock)?;
         let mut vfd = WlVfd::default();
         vfd.socket = Some(socket);
         Ok(vfd)