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 <auradkar@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
This commit is contained in:
Vikram Auradkar 2022-05-05 16:57:14 +00:00 committed by Chromeos LUCI
parent eee515bb56
commit 1018275948
2 changed files with 8 additions and 29 deletions

View file

@ -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()
}
}

View file

@ -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<u64>,
) -> Result<SharedMemory> {
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<MemfdSeals> {
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<String> {
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()