From: Danilo Krummrich Date: Mon, 3 Nov 2025 20:30:12 +0000 (+0100) Subject: rust: pci: get rid of redundant Result in IRQ methods X-Git-Tag: v6.19-rc1~90^2~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f7b01661f5f62211ca079afee922e1b44e3ae5d;p=thirdparty%2Fkernel%2Flinux.git rust: pci: get rid of redundant Result in IRQ methods Currently request_irq() returns Result, Error> + 'a> which may carry an error in the Result or the initializer; the same is true for request_threaded_irq(). Use pin_init::pin_init_scope() to get rid of this redundancy. Reviewed-by: Alice Ryhl Link: https://patch.msgid.link/20251103203053.2348783-1-dakr@kernel.org Signed-off-by: Danilo Krummrich --- diff --git a/rust/kernel/pci/irq.rs b/rust/kernel/pci/irq.rs index 782a524fe11c0..03f2de559a8a4 100644 --- a/rust/kernel/pci/irq.rs +++ b/rust/kernel/pci/irq.rs @@ -175,10 +175,12 @@ impl Device { flags: irq::Flags, name: &'static CStr, handler: impl PinInit + 'a, - ) -> Result, Error> + 'a> { - let request = vector.try_into()?; + ) -> impl PinInit, Error> + 'a { + pin_init::pin_init_scope(move || { + let request = vector.try_into()?; - Ok(irq::Registration::::new(request, flags, name, handler)) + Ok(irq::Registration::::new(request, flags, name, handler)) + }) } /// Returns a [`kernel::irq::ThreadedRegistration`] for the given IRQ vector. @@ -188,12 +190,14 @@ impl Device { flags: irq::Flags, name: &'static CStr, handler: impl PinInit + 'a, - ) -> Result, Error> + 'a> { - let request = vector.try_into()?; - - Ok(irq::ThreadedRegistration::::new( - request, flags, name, handler, - )) + ) -> impl PinInit, Error> + 'a { + pin_init::pin_init_scope(move || { + let request = vector.try_into()?; + + Ok(irq::ThreadedRegistration::::new( + request, flags, name, handler, + )) + }) } /// Allocate IRQ vectors for this PCI device with automatic cleanup.