[PATCH] misc: atmel-ssc: handle clock enable failure

From: Jiawen Liu

Date: Tue Aug 18 2026 - 09:23:57 EST


Return error from failed clock enable.

ssc_probe ignores clk_prepare_enable return before register writes and
unconditional disable_unprepare. Unchecked prepare/enable may be
unprepared on failure.

Check temporary pclk enable before SSC register access in ssc_probe.

Signed-off-by: jiawen <1298662399@xxxxxx>
---
diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c
--- a/drivers/misc/atmel-ssc.c
+++ b/drivers/misc/atmel-ssc.c
@@ -192,6 +192,7 @@
struct resource *regs;
struct ssc_device *ssc;
const struct atmel_ssc_platform_data *plat_dat;
+ int ret;

ssc = devm_kzalloc(&pdev->dev, sizeof(struct ssc_device), GFP_KERNEL);
if (!ssc) {
@@ -225,7 +226,9 @@
}

/* disable all interrupts */
- clk_prepare_enable(ssc->clk);
+ ret = clk_prepare_enable(ssc->clk);
+ if (ret)
+ return ret;
ssc_writel(ssc->regs, IDR, -1);
ssc_readl(ssc->regs, SR);
clk_disable_unprepare(ssc->clk);