All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sh: maple: use the matching IRQ cookie
@ 2026-10-09  4:02 Runyu Xiao
  2026-10-16 14:04 ` John Paul Adrian Glaubitz
  2026-10-17 18:22 ` Florian Fuchs
  0 siblings, 2 replies; 4+ messages in thread
From: Runyu Xiao @ 2026-10-09  4:02 UTC (permalink / raw)
  To: Yoshinori Sato
  Cc: Rich Felker, John Paul Adrian Glaubitz, linux-sh, linux-kernel,
	stable, Runyu Xiao, Jianhao Xu

The Maple DMA and VBLANK handlers are registered with
&maple_unsupported_device as their dev_id. Passing NULL to free_irq()
cannot find either action, so the handlers remain registered and the
IRQ core warns.

Use the same cookie when freeing both handlers on the error paths.

Fixes: 17be2d2b1c33 ("sh: Add maple bus support for the SEGA Dreamcast.")
Cc: stable@vger.kernel.org
Assisted-by: LLM
Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
---
 drivers/sh/maple/maple.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
index 5585f220e..7df88e00c 100644
--- a/drivers/sh/maple/maple.c
+++ b/drivers/sh/maple/maple.c
@@ -863,10 +863,10 @@ static int __init maple_bus_init(void)
 	kmem_cache_destroy(maple_queue_cache);
 
 cleanup_bothirqs:
-	free_irq(HW_EVENT_VSYNC, 0);
+	free_irq(HW_EVENT_VSYNC, &maple_unsupported_device);
 
 cleanup_irq:
-	free_irq(HW_EVENT_MAPLE_DMA, 0);
+	free_irq(HW_EVENT_MAPLE_DMA, &maple_unsupported_device);
 
 cleanup_dma:
 	free_pages((unsigned long) maple_sendbuf, MAPLE_DMA_PAGES);
-- 
2.34.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] sh: maple: use the matching IRQ cookie
  2026-10-09  4:02 [PATCH] sh: maple: use the matching IRQ cookie Runyu Xiao
@ 2026-10-16 14:04 ` John Paul Adrian Glaubitz
  2026-10-17 18:22 ` Florian Fuchs
  1 sibling, 0 replies; 4+ messages in thread
From: John Paul Adrian Glaubitz @ 2026-10-16 14:04 UTC (permalink / raw)
  To: Runyu Xiao, Yoshinori Sato, Geert Uytterhoeven, Florian Fuchs
  Cc: Rich Felker, linux-sh, linux-kernel, stable, Jianhao Xu

Hi Runyu,

On Fri, 2026-10-09 at 12:02 +0800, Runyu Xiao wrote:
> The Maple DMA and VBLANK handlers are registered with
> &maple_unsupported_device as their dev_id. Passing NULL to free_irq()
> cannot find either action, so the handlers remain registered and the
> IRQ core warns.
> 
> Use the same cookie when freeing both handlers on the error paths.
> 
> Fixes: 17be2d2b1c33 ("sh: Add maple bus support for the SEGA Dreamcast.")
> Cc: stable@vger.kernel.org
> Assisted-by: LLM
> Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
> ---
>  drivers/sh/maple/maple.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
> index 5585f220e..7df88e00c 100644
> --- a/drivers/sh/maple/maple.c
> +++ b/drivers/sh/maple/maple.c
> @@ -863,10 +863,10 @@ static int __init maple_bus_init(void)
>  	kmem_cache_destroy(maple_queue_cache);
>  
>  cleanup_bothirqs:
> -	free_irq(HW_EVENT_VSYNC, 0);
> +	free_irq(HW_EVENT_VSYNC, &maple_unsupported_device);
>  
>  cleanup_irq:
> -	free_irq(HW_EVENT_MAPLE_DMA, 0);
> +	free_irq(HW_EVENT_MAPLE_DMA, &maple_unsupported_device);
>  
>  cleanup_dma:
>  	free_pages((unsigned long) maple_sendbuf, MAPLE_DMA_PAGES);

I'm not 100% versed in the IRQ code but looking how both HW_EVENT_VSYNC
and HW_EVENT_MAPLE_DMA are registered using the maple_unsupported_device
cookie but not unregistered using them, your change seems logical.

Maybe Geert or Florian can have a second look and add their Reviewed-by.

Reviewed-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] sh: maple: use the matching IRQ cookie
  2026-10-09  4:02 [PATCH] sh: maple: use the matching IRQ cookie Runyu Xiao
  2026-10-16 14:04 ` John Paul Adrian Glaubitz
@ 2026-10-17 18:22 ` Florian Fuchs
  2026-10-17 18:34   ` John Paul Adrian Glaubitz
  1 sibling, 1 reply; 4+ messages in thread
From: Florian Fuchs @ 2026-10-17 18:22 UTC (permalink / raw)
  To: Runyu Xiao
  Cc: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, linux-sh,
	linux-kernel, stable, Jianhao Xu

On 09 Oct 12:02, Runyu Xiao wrote:
> The Maple DMA and VBLANK handlers are registered with
> &maple_unsupported_device as their dev_id. Passing NULL to free_irq()
> cannot find either action, so the handlers remain registered and the
> IRQ core warns.
> 
> Use the same cookie when freeing both handlers on the error paths.
> 
> Fixes: 17be2d2b1c33 ("sh: Add maple bus support for the SEGA Dreamcast.")
> Cc: stable@vger.kernel.org
> Assisted-by: LLM
> Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
> ---
>  drivers/sh/maple/maple.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
> index 5585f220e..7df88e00c 100644
> --- a/drivers/sh/maple/maple.c
> +++ b/drivers/sh/maple/maple.c
> @@ -863,10 +863,10 @@ static int __init maple_bus_init(void)
>  	kmem_cache_destroy(maple_queue_cache);
>  
>  cleanup_bothirqs:
> -	free_irq(HW_EVENT_VSYNC, 0);
> +	free_irq(HW_EVENT_VSYNC, &maple_unsupported_device);
>  
>  cleanup_irq:
> -	free_irq(HW_EVENT_MAPLE_DMA, 0);
> +	free_irq(HW_EVENT_MAPLE_DMA, &maple_unsupported_device);
>  
>  cleanup_dma:
>  	free_pages((unsigned long) maple_sendbuf, MAPLE_DMA_PAGES);
> -- 
> 2.34.1

The patch looks correct to me and works like intended, that it frees the
corresponding IRQ handler in the error path.

Reviewed-By: Florian Fuchs <fuchsfl@gmail.com>
Tested-by: Florian Fuchs <fuchsfl@gmail.com>
Fixes: b3c69e248176 ("maple: more robust device detection.")

Just a little addition, it looks like commit b3c69e248176
("maple: more robust device detection.") introduced the issue, where the
static irqaction with IRQF_SHARED, was replaced by a request_irq() with
a cookie, but the free_irq() wasn't updated.

I tested the patch with a forced failure of maple_bus_init(), which
gives the WARNs and keeps the handlers registered in /proc/interrupts:
Trying to free already-free IRQ 69
WARNING: kernel/irq/manage.c:1880 at 0x8c0522c4, CPU#0: swapper/0/1

After the patch, the IRQ handlers are unregistered in /proc/interrupts
and no kernel WARN is shown.

And tested if keyboard, mouse still work with the patch, which they do.

Thank you!
Regards
Florian

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] sh: maple: use the matching IRQ cookie
  2026-10-17 18:22 ` Florian Fuchs
@ 2026-10-17 18:34   ` John Paul Adrian Glaubitz
  0 siblings, 0 replies; 4+ messages in thread
From: John Paul Adrian Glaubitz @ 2026-10-17 18:34 UTC (permalink / raw)
  To: Florian Fuchs, Runyu Xiao
  Cc: Yoshinori Sato, Rich Felker, linux-sh, linux-kernel, stable,
	Jianhao Xu

Hi Florian,

On Sat, 2026-10-17 at 20:22 +0200, Florian Fuchs wrote:
> On 09 Oct 12:02, Runyu Xiao wrote:
> > The Maple DMA and VBLANK handlers are registered with
> > &maple_unsupported_device as their dev_id. Passing NULL to free_irq()
> > cannot find either action, so the handlers remain registered and the
> > IRQ core warns.
> > 
> > Use the same cookie when freeing both handlers on the error paths.
> > 
> > Fixes: 17be2d2b1c33 ("sh: Add maple bus support for the SEGA Dreamcast.")
> > Cc: stable@vger.kernel.org
> > Assisted-by: LLM
> > Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
> > ---
> >  drivers/sh/maple/maple.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
> > index 5585f220e..7df88e00c 100644
> > --- a/drivers/sh/maple/maple.c
> > +++ b/drivers/sh/maple/maple.c
> > @@ -863,10 +863,10 @@ static int __init maple_bus_init(void)
> >  	kmem_cache_destroy(maple_queue_cache);
> >  
> >  cleanup_bothirqs:
> > -	free_irq(HW_EVENT_VSYNC, 0);
> > +	free_irq(HW_EVENT_VSYNC, &maple_unsupported_device);
> >  
> >  cleanup_irq:
> > -	free_irq(HW_EVENT_MAPLE_DMA, 0);
> > +	free_irq(HW_EVENT_MAPLE_DMA, &maple_unsupported_device);
> >  
> >  cleanup_dma:
> >  	free_pages((unsigned long) maple_sendbuf, MAPLE_DMA_PAGES);
> > -- 
> > 2.34.1
> 
> The patch looks correct to me and works like intended, that it frees the
> corresponding IRQ handler in the error path.
> 
> Reviewed-By: Florian Fuchs <fuchsfl@gmail.com>
> Tested-by: Florian Fuchs <fuchsfl@gmail.com>
> Fixes: b3c69e248176 ("maple: more robust device detection.")
> 
> Just a little addition, it looks like commit b3c69e248176
> ("maple: more robust device detection.") introduced the issue, where the
> static irqaction with IRQF_SHARED, was replaced by a request_irq() with
> a cookie, but the free_irq() wasn't updated.
> 
> I tested the patch with a forced failure of maple_bus_init(), which
> gives the WARNs and keeps the handlers registered in /proc/interrupts:
> Trying to free already-free IRQ 69
> WARNING: kernel/irq/manage.c:1880 at 0x8c0522c4, CPU#0: swapper/0/1
> 
> After the patch, the IRQ handlers are unregistered in /proc/interrupts
> and no kernel WARN is shown.
> 
> And tested if keyboard, mouse still work with the patch, which they do.

Thanks a lot for both the additional review and testing!
Since I'm using b4, it will automatically pick up the Fixes tag you provided.

Will apply the patch tomorrow or Monday.

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-10-17 18:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-09  4:02 [PATCH] sh: maple: use the matching IRQ cookie Runyu Xiao
2026-10-16 14:04 ` John Paul Adrian Glaubitz
2026-10-17 18:22 ` Florian Fuchs
2026-10-17 18:34   ` John Paul Adrian Glaubitz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.