From 1018275948b3c91d8d1651e3c33442d197dee000 Mon Sep 17 00:00:00 2001 From: Vikram Auradkar Date: Thu, 5 May 2022 16:57:14 +0000 Subject: [PATCH] base: Prefer descriptor over raw fd in shm BUG=b:213153157 TEST=presubmit Change-Id: I308ca7a554bffa0887705a294e0f53c9d2bd1299 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3630705 Commit-Queue: Vikram Auradkar Tested-by: kokoro Reviewed-by: Dennis Kempin --- base/src/shm.rs | 4 +--- base/src/sys/unix/shm.rs | 33 +++++++-------------------------- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/base/src/shm.rs b/base/src/shm.rs index fd0f5943fe..240211bbdc 100644 --- a/base/src/shm.rs +++ b/base/src/shm.rs @@ -5,8 +5,6 @@ use crate::descriptor::{AsRawDescriptor, FromRawDescriptor, IntoRawDescriptor, SafeDescriptor}; use crate::{Error, RawDescriptor, Result}; use std::ffi::CStr; -#[cfg(unix)] -use std::os::unix::io::RawFd; use crate::platform::SharedMemory as SysUtilSharedMemory; use serde::{Deserialize, Serialize}; @@ -78,7 +76,7 @@ impl audio_streams::shm_streams::SharedMemory for SharedMemory { } #[cfg(unix)] - fn as_raw_fd(&self) -> RawFd { + fn as_raw_fd(&self) -> RawDescriptor { self.as_raw_descriptor() } } diff --git a/base/src/sys/unix/shm.rs b/base/src/sys/unix/shm.rs index 5b576b8dfe..e0404b694f 100644 --- a/base/src/sys/unix/shm.rs +++ b/base/src/sys/unix/shm.rs @@ -8,7 +8,6 @@ use std::{ io::{ Read, Seek, SeekFrom, Write, {self}, }, - os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}, }; use libc::{ @@ -19,8 +18,8 @@ use libc::{ use serde::{Deserialize, Serialize}; use super::{errno_result, Error, Result}; -use crate::SharedMemory as CrateSharedMemory; use crate::{AsRawDescriptor, IntoRawDescriptor, RawDescriptor, SafeDescriptor}; +use crate::{FromRawDescriptor, SharedMemory as CrateSharedMemory}; /// A shared memory file descriptor and its size. #[derive(Debug, Serialize, Deserialize)] @@ -152,7 +151,7 @@ impl SharedMemory { return errno_result(); } - let file = unsafe { File::from_raw_fd(fd) }; + let file = unsafe { File::from_raw_descriptor(fd) }; let mut shm = SharedMemory { fd: file, size: 0 }; shm.set_size(size)?; @@ -166,7 +165,7 @@ impl SharedMemory { descriptor: SafeDescriptor, size: Option, ) -> Result { - let mut file = unsafe { File::from_raw_fd(descriptor.into_raw_descriptor()) }; + let mut file = unsafe { File::from_raw_descriptor(descriptor.into_raw_descriptor()) }; let size = size.unwrap_or(file.seek(SeekFrom::End(0))?); Ok(SharedMemory { fd: file, size }) } @@ -187,7 +186,7 @@ impl SharedMemory { /// /// This may fail if this instance was not constructed from a memfd. pub fn get_seals(&self) -> Result { - let ret = unsafe { fcntl(self.fd.as_raw_fd(), F_GET_SEALS) }; + let ret = unsafe { fcntl(self.fd.as_raw_descriptor(), F_GET_SEALS) }; if ret < 0 { return errno_result(); } @@ -199,7 +198,7 @@ impl SharedMemory { /// This may fail if this instance was not constructed from a memfd with sealing allowed or if /// the seal seal (`F_SEAL_SEAL`) bit was already added. pub fn add_seals(&mut self, seals: MemfdSeals) -> Result<()> { - let ret = unsafe { fcntl(self.fd.as_raw_fd(), F_ADD_SEALS, seals) }; + let ret = unsafe { fcntl(self.fd.as_raw_descriptor(), F_ADD_SEALS, seals) }; if ret < 0 { return errno_result(); } @@ -219,7 +218,7 @@ impl SharedMemory { /// Note that if some process has already mapped this shared memory and the new size is smaller, /// that process may get signaled with SIGBUS if they access any page past the new size. pub fn set_size(&mut self, size: u64) -> Result<()> { - let ret = unsafe { ftruncate64(self.fd.as_raw_fd(), size as off64_t) }; + let ret = unsafe { ftruncate64(self.fd.as_raw_descriptor(), size as off64_t) }; if ret < 0 { return errno_result(); } @@ -233,7 +232,7 @@ impl SharedMemory { /// results are undefined. Because this returns a `String`, the name's bytes are interpreted as /// utf-8. pub fn read_name(&self) -> Result { - let fd_path = format!("/proc/self/fd/{}", self.as_raw_fd()); + let fd_path = format!("/proc/self/fd/{}", self.as_raw_descriptor()); let link_name = read_link(fd_path)?; link_name .to_str() @@ -290,24 +289,6 @@ impl Seek for &SharedMemory { } } -impl AsRawFd for SharedMemory { - fn as_raw_fd(&self) -> RawFd { - self.fd.as_raw_fd() - } -} - -impl AsRawFd for &SharedMemory { - fn as_raw_fd(&self) -> RawFd { - self.fd.as_raw_fd() - } -} - -impl IntoRawFd for SharedMemory { - fn into_raw_fd(self) -> RawFd { - self.fd.into_raw_fd() - } -} - impl AsRawDescriptor for SharedMemory { fn as_raw_descriptor(&self) -> RawDescriptor { self.fd.as_raw_descriptor()