From 6678681c2c809db7551c49f13d9a213021f85e81 Mon Sep 17 00:00:00 2001 From: Schmarni Date: Wed, 1 Oct 2025 01:19:32 +0200 Subject: [PATCH] fix(wayland/shm): don't leak fds on shm pool destruction Signed-off-by: Schmarni --- src/wayland/core/shm_pool.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wayland/core/shm_pool.rs b/src/wayland/core/shm_pool.rs index dcdf6ff..316804f 100644 --- a/src/wayland/core/shm_pool.rs +++ b/src/wayland/core/shm_pool.rs @@ -5,16 +5,17 @@ use crate::wayland::{ }; use memmap2::{MmapOptions, RemapOptions}; use parking_lot::{Mutex, MutexGuard, RawMutex, lock_api::MappedMutexGuard}; -use waynest_server::Client as _; -use std::os::fd::{IntoRawFd, OwnedFd}; +use std::os::fd::{AsRawFd, OwnedFd}; use waynest::ObjectId; use waynest_protocols::server::core::wayland::wl_shm::Format; pub use waynest_protocols::server::core::wayland::wl_shm_pool::*; +use waynest_server::Client as _; #[derive(Debug, waynest_server::RequestDispatcher)] #[waynest(error = crate::wayland::WaylandError, connection = crate::wayland::Client)] pub struct ShmPool { inner: Mutex, + fd: OwnedFd, id: ObjectId, } @@ -24,11 +25,12 @@ impl ShmPool { let map = unsafe { MmapOptions::new() .len(size as usize) - .map_mut(fd.into_raw_fd())? + .map_mut(fd.as_raw_fd())? }; Ok(Self { inner: Mutex::new(map), + fd, id, }) }