From 649f116d9d63ca21059be6cbcee221b4c5a6827f Mon Sep 17 00:00:00 2001 From: Richard Zhang Date: Thu, 6 Aug 2020 18:17:04 -0700 Subject: [PATCH] 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 Tested-by: kokoro Commit-Queue: Richard Zhang --- msg_socket/src/msg_on_socket.rs | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/msg_socket/src/msg_on_socket.rs b/msg_socket/src/msg_on_socket.rs index 011c2e8786..29ff6d3381 100644 --- a/msg_socket/src/msg_on_socket.rs +++ b/msg_socket/src/msg_on_socket.rs @@ -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 MsgOnSocket for Option { } } -impl MsgOnSocket for Mutex { - 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 { - self.lock().write_to_buffer(buffer, fds) - } -} - impl MsgOnSocket for Arc { fn uses_fd() -> bool { T::uses_fd()