diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-04-09 09:47:43 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-04-09 09:51:11 +0000 |
commit | 6d6c7532b7146d55cfbd78500171d4d5edaa2313 (patch) | |
tree | fa9f042a06ddb795033cbf7ab456ee69d4e32586 | |
parent | dbd5f925b6b2f4cb1bf87563be4d24c8ed35689a (diff) | |
download | crosvm-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.rs | 11 |
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) } } |