From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794018019; b=t5HHpIaRW6iZaJuctQGkzCCPQ7GJdmpmZZTxTDh5BiXK2jlg0vQvksWBVqDMcxXROlkR LBbglQCi3TXjNhaezu8wjle65WYS7gC/YSpubcHumXqIrtxmLC5G+OD8JY2QDOXrldUZ0 +uodki5AYiHk6RAInqoBnkYGm76260a3XxdKGHesAu5lMeEJ/7ZoIi2q6yj55q9+4MtLh 4TlI81J5DH+SuJq1hIeL3k3/tn7uYgT/XwFER1sWdLBbtkweA8fcZ25WltOBNc1nkGGXT L+5sI6vIq3BTwYkPQeBC+hQS7sllIspfmCOpVWdmJ3SRHzvj58fqkjxryValFxB6Lag== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794018019; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: MIME-Version:Content-Transfer-Encoding; bh=tDRNTiewiQVhH6ezSiY3pHSvP82vVUEEInKr2hmCowE=; b=nl9dsWdXL8ue50fdW/H0VZ5+n5Egjy3T8TkFicexuFX87e9Z4phkexdTKCHVfAPWUBPl 2WTrzKEgzP6V+ufVuA86n6VqHHEdZoTyH9VijC+S4xmd576n3okmUcreEl48KEvPyi8iA sE1AnSb8eu7q902GpFvUh113FPWR1tJsKVA1cRawZBGMjgDE5/uS8mFX1L29bcTgI3kqh 3mAEOdbLqncT92k8dK+Tbr5ofg48877mCttwXoRzt59W0AZ008ViY++SHrlo9YnOvD2Dz vdiKPXiTvvsjq2uftMRrr2TaOBsvEwVthb6VZJ9Z3kpJLKaTh8bjIGY4efDc2fFoFUA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=XWXDJEhk; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB3EC606A32C; Sat, 7 Nov 2026 02:20:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=XWXDJEhk Received: by smtp.kernel.org (Postfix) with ESMTPSA id A43361F008A3; Sat, 7 Nov 2026 02:20:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794018018; bh=tDRNTiewiQVhH6ezSiY3pHSvP82vVUEEInKr2hmCowE=; h=From:To:Cc:Subject:Date; b=XWXDJEhkayTcFSfsWAOQO1bHTomnmHjj4GJkCY7F2b62tyhGf6BbZiGL/++/xD/84 aW+zpwW7i8FfZTu+YjQBuyhVA/l4vcdw+bHebUCGHb5x/8Pp2OnwiEE7Uo7BRa6Hav 96jLqJqLbhNLCzEprO4/peVywMp3tyv/luRRADLM5JoI26LiLQZsHUInXk+RYLsgwu QvietdolKetbODGE7/6yjjqgcakS5fCkv0yHWrzQK0bXgERrRZQGiRjF5UYaIKv5LY YrSI3Y+/6b7aTfoazJZetHP7tOXdusLLQoR8qbguQ9Q0EZ83oKM0d/mgW3Qks+Q5cs WN+yqbP0PooXg== From: Danilo Krummrich To: dakr@kernel.org, aliceryhl@google.com, acourbot@nvidia.com, daniel.almeida@collabora.com, ojeda@kernel.org, boqun@kernel.org, gary@garyguo.net, bjorn3_gh@protonmail.com, lossin@kernel.org, a.hindborg@kernel.org, tmgross@umich.edu, tamird@kernel.org, work@onurozkan.dev, brauner@kernel.org, lyude@redhat.com, j@jananu.net, alvin.sun@linux.dev, deborah.brouwer@collabora.com, laura.nao@collabora.com, beata.michalska@arm.com Cc: nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 0/7] lifetime-parameterized DRM File private data Date: Sat, 7 Nov 2026 03:03:18 +0100 Message-ID: <20261107021427.2105374-1-dakr@kernel.org> X-Mailer: git-send-email 2.56.0 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit DRM file private data is currently 'static, preventing drivers from borrowing registration-scoped resources in their per-file state. This series makes Driver::File lifetime-parameterized, so file data can borrow from RegistrationData. File data is guaranteed to be dropped before registration data, either when the file is closed normally or when the device is unregistered, whichever comes first. To enforce this during unbind, Registration::drop() revokes all open file data and waits for its destruction before dropping registration data. fops.open is wrapped in a RegistrationGuard (drm_dev_enter/exit) so that after drm_dev_unplug() all successfully opened files are accounted for. GEM open/close callbacks are similarly gated to prevent access to stale file data after unbind. The series is based on drm-rust-next with [1] applied; a branch with the patches is available in [2]. [1] https://lore.kernel.org/all/20261105005951.756157-1-dakr@kernel.org/ [2] https://git.kernel.org/pub/scm/linux/kernel/git/dakr/linux.git/log/?h=drm/file Changes in v2: - Replace ForLt with Driver::File<'a>; use inner_with() for file-data access and allow returning borrowed fields. - Use Opaque during teardown. - Drop file data outside filelist_mutex; also clean up file data on registration failure. - Reject cross-device GEM handles. - Clarify safety documentation and add inline annotations. Danilo Krummrich (7): rust: drm: rename Ioctl device context to Userspace rust: drm: gem: gate open/close callbacks with RegistrationGuard rust: drm: move file_operations from gem to device rust: fs: add iminor() helper rust: drm: wrap fops open with RegistrationGuard rust: drm: return impl PinInit from DriverFile::open() rust: drm: make Driver::File lifetime-parameterized drivers/gpu/drm/nova/driver.rs | 2 +- drivers/gpu/drm/nova/file.rs | 16 +-- drivers/gpu/drm/nova/gem.rs | 8 +- drivers/gpu/drm/tyr/driver.rs | 2 +- drivers/gpu/drm/tyr/file.rs | 13 ++- rust/helpers/fs.c | 5 + rust/kernel/drm/device.rs | 141 ++++++++++++++++++++++---- rust/kernel/drm/driver.rs | 113 +++++++++++++++++++-- rust/kernel/drm/file.rs | 179 ++++++++++++++++++++++++--------- rust/kernel/drm/gem/mod.rs | 80 +++++++++------ rust/kernel/drm/gem/shmem.rs | 11 +- rust/kernel/drm/ioctl.rs | 18 ++-- rust/kernel/drm/mod.rs | 2 +- 13 files changed, 454 insertions(+), 136 deletions(-) base-commit: cef0cd809e564cca9ac824a369c995ab7e0d16f3 -- 2.56.0