From b892ed360de8227d700ef010b08564f87ad3a7ce Mon Sep 17 00:00:00 2001 From: Danilo Krummrich Date: Mon, 3 Nov 2025 21:30:13 +0100 Subject: [PATCH] rust: platform: get rid of redundant Result in IRQ methods Currently request_irq_by_index() returns Result, Error> + 'a> which may carry an error in the Result or the initializer; the same is true for the other IRQ methods. Use pin_init::pin_init_scope() to get rid of this redundancy. Reviewed-by: Alice Ryhl Link: https://patch.msgid.link/20251103203053.2348783-2-dakr@kernel.org Signed-off-by: Danilo Krummrich --- rust/kernel/platform.rs | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 8f7522c4cf89..f4b617c570be 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -301,15 +301,17 @@ macro_rules! define_irq_accessor_by_index { index: u32, name: &'static CStr, handler: impl PinInit + 'a, - ) -> Result, Error> + 'a> { - let request = self.$request_fn(index)?; + ) -> impl PinInit, Error> + 'a { + pin_init::pin_init_scope(move || { + let request = self.$request_fn(index)?; - Ok(irq::$reg_type::::new( - request, - flags, - name, - handler, - )) + Ok(irq::$reg_type::::new( + request, + flags, + name, + handler, + )) + }) } }; } @@ -325,18 +327,20 @@ macro_rules! define_irq_accessor_by_name { pub fn $fn_name<'a, T: irq::$handler_trait + 'static>( &'a self, flags: irq::Flags, - irq_name: &CStr, + irq_name: &'a CStr, name: &'static CStr, handler: impl PinInit + 'a, - ) -> Result, Error> + 'a> { - let request = self.$request_fn(irq_name)?; + ) -> impl PinInit, Error> + 'a { + pin_init::pin_init_scope(move || { + let request = self.$request_fn(irq_name)?; - Ok(irq::$reg_type::::new( - request, - flags, - name, - handler, - )) + Ok(irq::$reg_type::::new( + request, + flags, + name, + handler, + )) + }) } }; }