msg_socket: delete impl for Mutex

The MsgOnSocket impl for Mutex contains a threading bug where it's
possible for the object inside the Mutex to mutate after msg_size()
and/or fd_count() has been called.

Also it's not being used.

BUG=b:162032986
TEST=cargo test -p msg_socket

Change-Id: I41188547152236c8124d9ac9593deea93dc02c73
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2339308
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Richard Zhang <rizhang@google.com>
This commit is contained in:
Richard Zhang 2020-08-06 18:17:04 -07:00 committed by Commit Bot
parent 14fa6bdf5a
commit 649f116d9d

View file

@ -17,7 +17,6 @@ use std::sync::Arc;
use base::{Error as SysError, EventFd};
use data_model::*;
use slice::{slice_read_helper, slice_write_helper};
use sync::Mutex;
#[derive(Debug)]
/// An error during transaction or serialization/deserialization.
@ -190,28 +189,6 @@ impl<T: MsgOnSocket> MsgOnSocket for Option<T> {
}
}
impl<T: MsgOnSocket> MsgOnSocket for Mutex<T> {
fn uses_fd() -> bool {
T::uses_fd()
}
fn msg_size(&self) -> usize {
self.lock().msg_size()
}
fn fd_count(&self) -> usize {
self.lock().fd_count()
}
unsafe fn read_from_buffer(buffer: &[u8], fds: &[RawFd]) -> MsgResult<(Self, usize)> {
T::read_from_buffer(buffer, fds).map(|(v, count)| (Mutex::new(v), count))
}
fn write_to_buffer(&self, buffer: &mut [u8], fds: &mut [RawFd]) -> MsgResult<usize> {
self.lock().write_to_buffer(buffer, fds)
}
}
impl<T: MsgOnSocket> MsgOnSocket for Arc<T> {
fn uses_fd() -> bool {
T::uses_fd()