From 69795aedaa28fe4d852fe575b6fb2ec925954df1 Mon Sep 17 00:00:00 2001 From: Lyude Paul <lyude@redhat.com> Date: Mon, 2 Dec 2024 15:51:04 -0500 Subject: [PATCH] squash! WIP: rust: drm/kms: Add OpaqueEncoder * Add safety comments for AsRawEncoder --- rust/kernel/drm/kms/encoder.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rust/kernel/drm/kms/encoder.rs b/rust/kernel/drm/kms/encoder.rs index 0c4577fde7f5d..a6d8681959539 100644 --- a/rust/kernel/drm/kms/encoder.rs +++ b/rust/kernel/drm/kms/encoder.rs @@ -294,7 +294,11 @@ unsafe impl<T: KmsDriver> ModeObject for OpaqueEncoder<T> { // SAFETY: Encoders do not have a refcount unsafe impl<T: KmsDriver> StaticModeObject for OpaqueEncoder<T> {} -impl<T: KmsDriver> AsRawEncoder for OpaqueEncoder<T> { +// SAFETY: +// * Via our type variants our data layout is identical to with `drm_encoder` +// * Since we don't expose `Encoder` to users before it has been initialized, this and our data +// layout ensure that `as_raw()` always returns a valid pointer to a `drm_encoder`. +unsafe impl<T: KmsDriver> AsRawEncoder for OpaqueEncoder<T> { fn as_raw(&self) -> *mut bindings::drm_encoder { self.encoder.get() } -- GitLab