[PATCH] sparc: Fix a reference leak in central_build_irq()

Haoxiang Li posted 1 patch 2 weeks, 3 days ago
arch/sparc/kernel/prom_irqtrans.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] sparc: Fix a reference leak in central_build_irq()
Posted by Haoxiang Li 2 weeks, 3 days ago
Call put_device() once central_op is no longer needed, preventing
a reference leak.

Fixes: 5fce09c6f636 ("sparc: Move irq_trans_init() and support code into seperate file.")
Cc: stable@vger.kernel.org
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
---
 arch/sparc/kernel/prom_irqtrans.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/sparc/kernel/prom_irqtrans.c b/arch/sparc/kernel/prom_irqtrans.c
index 5752bfd73ac0..4cfc27131caa 100644
--- a/arch/sparc/kernel/prom_irqtrans.c
+++ b/arch/sparc/kernel/prom_irqtrans.c
@@ -733,6 +733,7 @@ static unsigned int central_build_irq(struct device_node *dp,
 	} else if (of_node_name_eq(dp, "clock-board")) {
 		res = &central_op->resource[3];
 	} else {
+		put_device(&central_op->dev);
 		return ino;
 	}
 
@@ -747,6 +748,7 @@ static unsigned int central_build_irq(struct device_node *dp,
 	tmp &= ~0x80000000;
 	upa_writel(tmp, imap);
 
+	put_device(&central_op->dev);
 	return build_irq(0, iclr, imap);
 }
 
-- 
2.25.1
Re: [PATCH] sparc: Fix a reference leak in central_build_irq()
Posted by Markus Elfring 2 weeks, 2 days ago
> Call put_device() once central_op is no longer needed, preventing
> a reference leak.

How do you think about to apply the attribute “__free(put_device)” here?
https://elixir.bootlin.com/linux/v6.17-rc5/source/include/linux/device.h#L1180

Regards,
Markus