From nobody Fri Sep 25 04:08:50 2026 Received: from cstnet.cn (smtp25.cstnet.cn [159.226.251.25]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 231FA4E50D4; Wed, 16 Sep 2026 19:04:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.25 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789585478; cv=none; b=aHyWQX7iUxfRngw8h+haSowbSqDhI4+90LCO9+xNDuG+r+NlP0xrA++9siYx5B89L9Ios4sxWlZph1P3pcoBrGQNqjzV7M0Emb0EVSrgLBJR8F4MUwXl+I3Dujx6u6GzPPLjN03t1+IxwZsTgZHJmFj9XyOIUgVJYDELTUFP/Hk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789585478; c=relaxed/simple; bh=l5Alpd31AHP4TwtPAyrU5XR6XBBM++/h+LpzjcPl09g=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=qWp8zXTF7IMzRW5aY1fAiyRVEDepRXxnNUPdMKSPSisxmBGwLRLA/rsaWUfEqFcDEGXcOxE/mTxE7spVq06Q3qX5R7RtklclPlQjfpKT5hJn+t5WfyPljeoxiyk8nJwqjlADm2C4i6GLaaDGZRxBdtvyIURMV12kaNYuhXsVgbk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.25 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from dfae2b116770.home.arpa (unknown [36.110.52.2]) by APP-05 (Coremail) with SMTP id zQCowADnVD8w6Kpq0hBwCA--.24957S2; Thu, 17 Sep 2026 03:04:16 +0800 (CST) From: Wentao Liang To: claudiu.beznea@tuxon.dev Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, maz@kernel.org, tglx@kernel.org, Wentao Liang , stable@vger.kernel.org Subject: [PATCH] irqchip/mchp-eic: Fix clock reference leak in mchp_eic_probe() Date: Wed, 16 Sep 2026 19:03:49 +0000 Message-Id: <20260916190349.2094401-1-vulab@iscas.ac.cn> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: zQCowADnVD8w6Kpq0hBwCA--.24957S2 X-Coremail-Antispam: 1UD129KBjvJXoW7WFWUKF4ftr48AFW8Wry7GFg_yoW8GFW7pF 4UJa9avrs3GayFkrs5Aw4DZFyYyw1UKFy3K393G3ZrWwnxJ3srJFW0va4DZan8AFWxCa1v kwn8tFy8AF4DZFDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUv014x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26r4j6ryUM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4j 6r4UJwA2z4x0Y4vEx4A2jsIE14v26r4UJVWxJr1l84ACjcxK6I8E87Iv6xkF7I0E14v26r xl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj 6xIIjxv20xvE14v26r1q6rW5McIj6I8E87Iv67AKxVW8Jr0_Cr1UMcvjeVCFs4IE7xkEbV WUJVW8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc7CjxVAaw2AF wI0_JF0_Jw1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1D MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWx JVW8Jr1lIxAIcVC2z280aVCY1x0267AKxVWxJr0_GcJvcSsGvfC2KfnxnUUI43ZEXa7VUb khL5UUUUU== X-CM-SenderInfo: pyxotu46lvutnvoduhdfq/1tbiBwMMA2qqpViGvwABsO Content-Type: text/plain; charset="utf-8" of_clk_get_by_name() returns the clock with an elevated reference count that mchp_eic_probe() keeps for the lifetime of the driver, but none of the probe error paths drops it, so the reference is leaked whenever probe fails after the clock has been obtained. Put the reference in the error cleanup. The clk_prepare_enable() failure path must jump there directly as it cannot call clk_disable_unprepare() on a clock that was never enabled. Fixes: 00fa3461c86d ("irqchip/mchp-eic: Add support for the Microchip EIC") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang --- drivers/irqchip/irq-mchp-eic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/irqchip/irq-mchp-eic.c b/drivers/irqchip/irq-mchp-eic.c index be007d325e67..5250e6baff63 100644 --- a/drivers/irqchip/irq-mchp-eic.c +++ b/drivers/irqchip/irq-mchp-eic.c @@ -233,7 +233,7 @@ static int mchp_eic_probe(struct platform_device *pdev,= struct device_node *pare =20 ret =3D clk_prepare_enable(eic->clk); if (ret) - goto unmap; + goto clk_put; =20 for (i =3D 0; i < MCHP_EIC_NIRQ; i++) { struct of_phandle_args irq; @@ -270,6 +270,8 @@ static int mchp_eic_probe(struct platform_device *pdev,= struct device_node *pare =20 clk_unprepare: clk_disable_unprepare(eic->clk); +clk_put: + clk_put(eic->clk); unmap: iounmap(eic->base); free: --=20 2.34.1