[PATCH v2 0/7] lifetime-parameterized DRM File private data

From: Danilo Krummrich

Date: Fri Nov 06 2026 - 21:21:10 EST


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@xxxxxxxxxx/
[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<bindings::drm_file> 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