mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-10-23 04:46:29 +00:00
rutabaga_gfx: Uprev nix to 0.27.1
The new version of nix uses OwnedFd in various places, which allows us to have less unsafe code. TEST=CQ BUG=b:293289578 Change-Id: I61aa80c4105eaf1182c5c325109b5aba11cf60de Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5072293 Auto-Submit: Andrew Walbran <qwandor@google.com> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Frederick Mayle <fmayle@google.com> Commit-Queue: Frederick Mayle <fmayle@google.com>
This commit is contained in:
parent
8821e8f414
commit
f3dbf20eed
6 changed files with 23 additions and 20 deletions
13
Cargo.lock
generated
13
Cargo.lock
generated
|
@ -1654,18 +1654,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.7.1"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
||||
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.8.0"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
|
||||
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
@ -1790,8 +1790,6 @@ dependencies = [
|
|||
"bitflags 1.3.2",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"memoffset 0.7.1",
|
||||
"pin-utils",
|
||||
"static_assertions",
|
||||
]
|
||||
|
||||
|
@ -1804,6 +1802,7 @@ dependencies = [
|
|||
"bitflags 2.3.2",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"memoffset 0.9.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2310,7 +2309,7 @@ dependencies = [
|
|||
"cfg-if",
|
||||
"libc",
|
||||
"log",
|
||||
"nix 0.26.2",
|
||||
"nix 0.27.1",
|
||||
"pkg-config",
|
||||
"remain",
|
||||
"thiserror",
|
||||
|
|
|
@ -27,7 +27,7 @@ zerocopy = { version = "0.7", features = ["derive"] }
|
|||
log = "0.4"
|
||||
|
||||
[target.'cfg(any(target_os = "android", target_os = "linux"))'.dependencies]
|
||||
nix = "0.26.1"
|
||||
nix = { version = "0.27.1", features = ["event", "feature", "fs", "mman", "socket", "uio"] }
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
winapi = "0.3"
|
||||
|
|
|
@ -8,7 +8,6 @@ use std::io::IoSliceMut;
|
|||
use std::io::Seek;
|
||||
use std::io::SeekFrom;
|
||||
use std::os::unix::io::AsRawFd;
|
||||
use std::os::unix::io::FromRawFd;
|
||||
use std::os::unix::prelude::AsFd;
|
||||
|
||||
use libc::O_ACCMODE;
|
||||
|
@ -160,8 +159,8 @@ impl CrossDomainContext {
|
|||
)?;
|
||||
|
||||
let unix_addr = UnixAddr::new(base_channel)?;
|
||||
connect(socket_fd, &unix_addr)?;
|
||||
let stream = unsafe { File::from_raw_fd(socket_fd) };
|
||||
connect(socket_fd.as_raw_fd(), &unix_addr)?;
|
||||
let stream = socket_fd.into();
|
||||
Ok(Some(stream))
|
||||
}
|
||||
|
||||
|
@ -277,7 +276,7 @@ pub fn write_volatile(file: &File, opaque_data: &[u8]) -> RutabagaResult<()> {
|
|||
}
|
||||
|
||||
pub fn channel() -> RutabagaResult<(Sender, Receiver)> {
|
||||
let sender = unsafe { File::from_raw_fd(eventfd(0, EfdFlags::empty())?) };
|
||||
let sender: File = eventfd(0, EfdFlags::empty())?.into();
|
||||
let receiver = sender.try_clone()?;
|
||||
Ok((sender, receiver))
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
use std::convert::TryFrom;
|
||||
use std::fs::File;
|
||||
use std::os::fd::AsFd;
|
||||
use std::os::fd::BorrowedFd;
|
||||
use std::os::unix::io::AsRawFd;
|
||||
use std::os::unix::io::FromRawFd;
|
||||
use std::os::unix::io::IntoRawFd;
|
||||
|
@ -85,6 +87,14 @@ impl AsRawFd for Descriptor {
|
|||
}
|
||||
}
|
||||
|
||||
impl AsFd for SafeDescriptor {
|
||||
fn as_fd(&self) -> BorrowedFd {
|
||||
// SAFETY: the `BorrowedFd` we return lives no longer than this `SafeDescriptor`, so the
|
||||
// descriptor will remain open.
|
||||
unsafe { BorrowedFd::borrow_raw(self.descriptor) }
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! AsRawDescriptor {
|
||||
($name:ident) => {
|
||||
impl AsRawDescriptor for $name {
|
||||
|
|
|
@ -10,7 +10,6 @@ use nix::sys::mman::munmap;
|
|||
use nix::sys::mman::MapFlags;
|
||||
use nix::sys::mman::ProtFlags;
|
||||
|
||||
use crate::rutabaga_os::descriptor::AsRawDescriptor;
|
||||
use crate::rutabaga_os::descriptor::SafeDescriptor;
|
||||
use crate::rutabaga_utils::RutabagaError;
|
||||
use crate::rutabaga_utils::RutabagaResult;
|
||||
|
@ -59,7 +58,7 @@ impl MemoryMapping {
|
|||
non_zero_size,
|
||||
prot,
|
||||
MapFlags::MAP_SHARED,
|
||||
descriptor.as_raw_descriptor(),
|
||||
Some(descriptor),
|
||||
0,
|
||||
)?
|
||||
};
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
use std::convert::TryInto;
|
||||
use std::ffi::CStr;
|
||||
use std::os::unix::io::AsRawFd;
|
||||
use std::os::unix::io::FromRawFd;
|
||||
use std::os::unix::io::OwnedFd;
|
||||
|
||||
use libc::off_t;
|
||||
|
@ -34,15 +32,13 @@ impl SharedMemory {
|
|||
///
|
||||
/// The file descriptor is opened with the close on exec flag and allows memfd sealing.
|
||||
pub fn new(debug_name: &CStr, size: u64) -> RutabagaResult<SharedMemory> {
|
||||
// Nix will transition to owned fd in future releases, do it locally here.
|
||||
let raw_fd = memfd_create(
|
||||
let fd = memfd_create(
|
||||
debug_name,
|
||||
MemFdCreateFlag::MFD_CLOEXEC | MemFdCreateFlag::MFD_ALLOW_SEALING,
|
||||
)?;
|
||||
let fd = unsafe { OwnedFd::from_raw_fd(raw_fd) };
|
||||
|
||||
let size_off_t: off_t = size.try_into()?;
|
||||
ftruncate(fd.as_raw_fd(), size_off_t)?;
|
||||
ftruncate(&fd, size_off_t)?;
|
||||
|
||||
Ok(SharedMemory { fd, size })
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue