From nobody Thu Jun 25 00:31:11 2026 Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 219603D9DAC for ; Mon, 8 Jun 2026 18:20:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780942827; cv=none; b=YOKNxfZX7iA2GEtQto8TndSNvoox3GK6h8YCCgZ47LVcjb/uDleNS9K+Hiq68ZwHYp/mVPTWsdEIugJWdd5THppocd8FtGOS2L4+zEZFnnj3zE9FefQ8krQ1KqLDgO38bRntrrfn9tJzotu5fsCbbFiDCufexfAclFXLSIuYCyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780942827; c=relaxed/simple; bh=yICr6atTgvj21JlfnPS/I9jiunvBvOMZL7yJz+YEcYY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Kt8b8L6osmp5BYv/aQ6wJPZfLL9QMENLw2kAElujCEtOD43pH9hIPtICnx1N/fIF+A5Kkp4P9iIGKUWlRpO4kdIL5Jth8obOxw/JU73lxLFm8dabivWr0g7JE2l9T2cR+7uDa46UA9/DZ0nT0QS7zPR4dLzLnGxo0ZL/kUZDXt8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=b3y1mhh4; arc=none smtp.client-ip=209.85.222.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b3y1mhh4" Received: by mail-qk1-f174.google.com with SMTP id af79cd13be357-9157f7c1c0eso478197785a.1 for ; Mon, 08 Jun 2026 11:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780942823; x=1781547623; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=pIqTdl36Y/WI7M7gGI5vXO46nocZuRjABb/SuQlLEJU=; b=b3y1mhh4hgUA0ICcxIL0bVKS3Lms1Yb9W/RLVjgyt8LG5K6q56+pDfUz/j+T0Dfk9x fxMSBbb32xN+uL4Ehtr8Cv60lnUtMzNLVyswh5Dw3dFUuThgZwTqvev6NQllL3KQc/Fc ijNmk1j3bzUgDmrguYMJyEZOIkzHqChTs8cvMfC7sclNmJwjnIsgR6Tbui0Hloa0jGJg 0dOdLpbCr4saR6qKMwQrffZJwI5c/tRPzW69Rhq+3FC8P2eh1S8c48aO0ItUnExy5p8F Sg9ZKk1vPnlZhNG+hoS3FB+Um6cIQ2PrYCu0k5HfponvuK4p8fQOQwTN7fJQ1Xq9pFfL runw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780942823; x=1781547623; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pIqTdl36Y/WI7M7gGI5vXO46nocZuRjABb/SuQlLEJU=; b=PikfU+uf58mjoUxxqF2tKYUOLZxExQ1aIfEWiK09NilxcJsdOgwZDrnyDSUIRLa/Pw rI6nWHmDj9A1bBKXYwfYcll1hSz/XASxihsP8f2hRHbVYZGE2cm2OeNaZ2tjiYmfhCzf qjqIKLjAee4uwr1sTYcqEPoonjFTQ/+UZDD1HKJUgqrMo0Y7g8b2OxBbqwko1Cxvvwwu lAuOqMPQRjP6WJZjQc0DJracXjoARp+rZg2cKtvSee0wlocXkbBjbRE3oKvzCWZzowNr S6p0OXZE5DAY430zbTIkMUHkntYxm5HsRBH+iQ+c5YO/C1VP0tSKWlm7trIcYZT5ewJ7 bp/A== X-Forwarded-Encrypted: i=1; AFNElJ95Q5bwl1oeTub0xRgXjM4xhKf0vMLgtrRhEtpm3E9W2m7HbyzwusN83VHDPyp7ZVDVILpFw04LhgfHNAY=@vger.kernel.org X-Gm-Message-State: AOJu0YzO+IwGodTA/SH2WRja8vkbBiJ10FgomyaBX1J6Y0chRI4d5NO/ hH9PcEb0LSMIwQTkSBXVqhjEyoLFou767RzMPwSok7EsgPi4j44BFqUJ X-Gm-Gg: Acq92OG7cmrJbpVqN/7eBXXqrGMIjdyjbkFNKL01QHVzTHrK4AO1FgaR3BH9Arb8QGg ZVz5PDFMrzetzleI1Lm4tCdCvC7TXi4BrwgF5CiIY9KOTQP8xNvuAsXV7KEwrN4Y7vPGdl/yVDo Kn2PMThvOouSdzoAX+xHU+MIKBgsq3iT6y7/qtLsmm7XCtjnm6E+iqHwOZs8zagyptfgqNMbKwt GPlT+JOSYwqxH1KKLmDnhR7+/5lsIK6+YzrDY7sMKCdGjKbjO+f9t4+aA1Ssh/n7EUwFbbq+B8q Fp3LY+4pZ8xO95TjxyRxmjfUzn40RoWXAnSHNhr7WN3Sh+DWmaaFvtDyFXLMQfgM/wczJs57diH ahUuU1YfBIBGl2robCBXL6bcmrGDpez/qZIyfDV6hnZKORv4ET99NRZL69L30U15w1m9uPmE1NL NFwJlskVcRiNj/q8caHdSzbcLqkwEdlfl6N0nvwhsNuuY63WwNZmE= X-Received: by 2002:a05:620a:bcb:b0:915:9125:e649 with SMTP id af79cd13be357-915a9df2c0dmr2633482185a.44.1780942822814; Mon, 08 Jun 2026 11:20:22 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a3c764asm1846350885a.37.2026.06.08.11.20.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 11:20:22 -0700 (PDT) From: Yuho Choi To: Daniel Lezcano , Thomas Gleixner , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea Cc: Boris Brezillon , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v1] clocksource/drivers/timer-atmel-pit: Fix init failure cleanup Date: Mon, 8 Jun 2026 14:20:15 -0400 Message-ID: <20260608182016.99715-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 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 Content-Type: text/plain; charset="utf-8" After clk_prepare_enable(data->mck) succeeds, at91sam926x_pit_dt_init() can still fail while parsing the IRQ, registering the clocksource, or requesting the IRQ. These paths only free the driver data, leaving the master clock enabled. Unwind each initialized state on failure. Stop the PIT after it has been started, dispose the IRQ mapping after it has been created, disable and put the master clock, and unmap the registers before freeing the driver data. Fixes: 699e36e5b8e9 ("clocksource/drivers/timer-atmel-pit: Enable mck clock= ") Signed-off-by: Yuho Choi --- drivers/clocksource/timer-atmel-pit.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/clocksource/timer-atmel-pit.c b/drivers/clocksource/ti= mer-atmel-pit.c index 888b06731e54..edd427ab93e6 100644 --- a/drivers/clocksource/timer-atmel-pit.c +++ b/drivers/clocksource/timer-atmel-pit.c @@ -12,7 +12,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -185,13 +187,13 @@ static int __init at91sam926x_pit_dt_init(struct devi= ce_node *node) if (IS_ERR(data->mck)) { pr_err("Unable to get mck clk\n"); ret =3D PTR_ERR(data->mck); - goto exit; + goto exit_iounmap; } =20 ret =3D clk_prepare_enable(data->mck); if (ret) { pr_err("Unable to enable mck\n"); - goto exit; + goto exit_clk_put; } =20 /* Get the interrupts property */ @@ -199,7 +201,7 @@ static int __init at91sam926x_pit_dt_init(struct device= _node *node) if (!data->irq) { pr_err("Unable to get IRQ from DT\n"); ret =3D -EINVAL; - goto exit; + goto exit_clk_disable; } =20 /* @@ -227,7 +229,7 @@ static int __init at91sam926x_pit_dt_init(struct device= _node *node) ret =3D clocksource_register_hz(&data->clksrc, pit_rate); if (ret) { pr_err("Failed to register clocksource\n"); - goto exit; + goto exit_pit_disable; } =20 /* Set up irq handler */ @@ -237,7 +239,7 @@ static int __init at91sam926x_pit_dt_init(struct device= _node *node) if (ret) { pr_err("Unable to setup IRQ\n"); clocksource_unregister(&data->clksrc); - goto exit; + goto exit_pit_disable; } =20 /* Set up and register clockevents */ @@ -256,6 +258,15 @@ static int __init at91sam926x_pit_dt_init(struct devic= e_node *node) =20 return 0; =20 +exit_pit_disable: + pit_write(data->base, AT91_PIT_MR, 0); + irq_dispose_mapping(data->irq); +exit_clk_disable: + clk_disable_unprepare(data->mck); +exit_clk_put: + clk_put(data->mck); +exit_iounmap: + iounmap(data->base); exit: kfree(data); return ret; --=20 2.43.0