]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lis3lv02d: Omit IRQF_ONESHOT if no threaded handler is provided
authorArd Biesheuvel <ardb@kernel.org>
Thu, 26 Mar 2026 18:04:36 +0000 (19:04 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Apr 2026 08:19:43 +0000 (10:19 +0200)
The lis3lv02d started triggering a WARN in the IRQ code because it
passes IRQF_ONESHOT to request_threaded_irq() even when thread_fn is
NULL, which is an invalid combination.

So set the flag only if thread_fn is non-NULL.

Cc: Eric Piel <eric.piel@tremplin-utc.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://patch.msgid.link/20260326180436.14968-2-ardb@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/lis3lv02d/lis3lv02d.c

index 9c68f8b1d5d653d534f2da768d2c7cec64082be8..21e8ad0a744429683765bfed2d344ad18d481fde 100644 (file)
@@ -1230,10 +1230,12 @@ int lis3lv02d_init_device(struct lis3lv02d *lis3)
        else
                thread_fn = NULL;
 
+       if (thread_fn)
+               irq_flags |= IRQF_ONESHOT;
+
        err = request_threaded_irq(lis3->irq, lis302dl_interrupt,
                                thread_fn,
-                               IRQF_TRIGGER_RISING | IRQF_ONESHOT |
-                               irq_flags,
+                               irq_flags | IRQF_TRIGGER_RISING,
                                DRIVER_NAME, lis3);
 
        if (err < 0) {