Commit 99c8c16a4aad for kernel

commit 99c8c16a4aad0b37293cae213e15957c573cf79b
Author: Bastien Curutchet (Schneider Electric) <bastien.curutchet@bootlin.com>
Date:   Mon Mar 9 14:15:43 2026 +0100

    net: dsa: microchip: Fix error path in PTP IRQ setup

    If request_threaded_irq() fails during the PTP message IRQ setup, the
    newly created IRQ mapping is never disposed. Indeed, the
    ksz_ptp_irq_setup()'s error path only frees the mappings that were
    successfully set up.

    Dispose the newly created mapping if the associated
    request_threaded_irq() fails at setup.

    Cc: stable@vger.kernel.org
    Fixes: d0b8fec8ae505 ("net: dsa: microchip: Fix symetry in ksz_ptp_msg_irq_{setup/free}()")
    Signed-off-by: Bastien Curutchet (Schneider Electric) <bastien.curutchet@bootlin.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Link: https://patch.msgid.link/20260309-ksz-ptp-irq-fix-v1-1-757b3b985955@bootlin.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

diff --git a/drivers/net/dsa/microchip/ksz_ptp.c b/drivers/net/dsa/microchip/ksz_ptp.c
index 4a2cc57a628f..8b98039320ad 100644
--- a/drivers/net/dsa/microchip/ksz_ptp.c
+++ b/drivers/net/dsa/microchip/ksz_ptp.c
@@ -1108,6 +1108,7 @@ static int ksz_ptp_msg_irq_setup(struct ksz_port *port, u8 n)
 	const struct ksz_dev_ops *ops = port->ksz_dev->dev_ops;
 	struct ksz_irq *ptpirq = &port->ptpirq;
 	struct ksz_ptp_irq *ptpmsg_irq;
+	int ret;

 	ptpmsg_irq = &port->ptpmsg_irq[n];
 	ptpmsg_irq->num = irq_create_mapping(ptpirq->domain, n);
@@ -1119,9 +1120,13 @@ static int ksz_ptp_msg_irq_setup(struct ksz_port *port, u8 n)

 	strscpy(ptpmsg_irq->name, name[n]);

-	return request_threaded_irq(ptpmsg_irq->num, NULL,
-				    ksz_ptp_msg_thread_fn, IRQF_ONESHOT,
-				    ptpmsg_irq->name, ptpmsg_irq);
+	ret = request_threaded_irq(ptpmsg_irq->num, NULL,
+				   ksz_ptp_msg_thread_fn, IRQF_ONESHOT,
+				   ptpmsg_irq->name, ptpmsg_irq);
+	if (ret)
+		irq_dispose_mapping(ptpmsg_irq->num);
+
+	return ret;
 }

 int ksz_ptp_irq_setup(struct dsa_switch *ds, u8 p)