summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-04-09 09:47:43 +0000
committerAlyssa Ross <hi@alyssa.is>2020-04-09 09:51:11 +0000
commit6d6c7532b7146d55cfbd78500171d4d5edaa2313 (patch)
treefa9f042a06ddb795033cbf7ab456ee69d4e32586
parentdbd5f925b6b2f4cb1bf87563be4d24c8ed35689a (diff)
downloadcrosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.tar
crosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.tar.gz
crosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.tar.bz2
crosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.tar.lz
crosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.tar.xz
crosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.tar.zst
crosvm-6d6c7532b7146d55cfbd78500171d4d5edaa2313.zip
devices: remove unnecessary RefCell in VmRequester
There's no need for vm_socket to be mutably borrowed.  Neither send()
nor recv() are mutating methods, we don't have to worry about multiple
racing immutable borrows, because the type can only be used on one
thread thanks to Rc.
-rw-r--r--devices/src/virtio/wl.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/devices/src/virtio/wl.rs b/devices/src/virtio/wl.rs
index 65ad1cf..95075b4 100644
--- a/devices/src/virtio/wl.rs
+++ b/devices/src/virtio/wl.rs
@@ -28,7 +28,6 @@
 //! the virtio queue, and routing messages in and out of `WlState`. Possible events include the kill
 //! event, available descriptors on the `in` or `out` queue, and incoming data on any vfd's socket.
 
-use std::cell::RefCell;
 use std::collections::btree_map::Entry;
 use std::collections::{BTreeMap as Map, BTreeSet as Set, VecDeque};
 use std::convert::From;
@@ -327,21 +326,19 @@ impl From<VolatileMemoryError> for WlError {
 
 #[derive(Clone)]
 struct VmRequester {
-    inner: Rc<RefCell<VmMemoryControlRequestSocket>>,
+    vm_socket: Rc<VmMemoryControlRequestSocket>,
 }
 
 impl VmRequester {
     fn new(vm_socket: VmMemoryControlRequestSocket) -> VmRequester {
         VmRequester {
-            inner: Rc::new(RefCell::new(vm_socket)),
+            vm_socket: Rc::new(vm_socket),
         }
     }
 
     fn request(&self, request: VmMemoryRequest) -> WlResult<VmMemoryResponse> {
-        let mut inner = self.inner.borrow_mut();
-        let vm_socket = &mut *inner;
-        vm_socket.send(&request).map_err(WlError::VmControl)?;
-        vm_socket.recv().map_err(WlError::VmControl)
+        self.vm_socket.send(&request).map_err(WlError::VmControl)?;
+        self.vm_socket.recv().map_err(WlError::VmControl)
     }
 }