Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3441964pxj; Mon, 7 Jun 2021 10:39:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx2u8PP7Tb+MtiaVPIFfXxsl7T4hTlAoBlmwji3NkeC5ovY41/8F/rtImswjwhE+35lKC0k X-Received: by 2002:a05:6402:368:: with SMTP id s8mr21508949edw.129.1623087581366; Mon, 07 Jun 2021 10:39:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623087581; cv=none; d=google.com; s=arc-20160816; b=s4DaAJxYUKG1Sn7rklSgp0pesXAnTvGdttrEmIJdB4DOynrblsLvgzWrRKJpjBuz4d JykZE6VopqQwwfWQvIM4g/9x/13QjPzb94ve/mqpfbfZ/V/4NyjSWKL9hbOnv+fmNO6t 2mi3ooa9+ceSa3xgx0tDLmVqui7RgOSLl1pyWmYa4ALDLPk+9E8zQ7jOgjsceUqlWtCt SlCtp7dQ7yGFqpKL6ztm3r7kTtenR1ona9J8RAlVQLVYiaZGor3FoV5KEpXg9O/Q5h3Y L7j2bYOghWhvEjsuumTUUU8p35qXaiESpjCkW5Vx5duf0LVarKsheq1j6NI9ORPpskLW d6ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=cQ0HCecLBzhbySylNjeEx08B0uL27TMXk9h3b7u59u8=; b=gVdtOViVJcEJYAW7hc1HDHd7Wot0gI8kqy3os9Nu2J1H4c6X/Lk3qnLSOwsnUHHP1e CPzgPUpujJARbcRDG7h/npeHSo4lEJ46mPjD1fkLiUwEzgy255XI10+APxSv0aV7c28s EmS6NHLUwdyuYXO9yXtFeKYh6ZD3j2qVrSPrgkzMbAE1jH2ldqFv+T0U08TK8gj+oL5i GclQnConNH2dBmr1B6s/zWkNeIkHhqoyBT7M7aL2/e/lA+MhH0bRUKyJQa4YEKEtqpqX ql9pYI9QjfD4/bsclp1cSdqpWECTjTephieiXwHCipDHRXy8+NA13MhpSPlGUn5QDUrm IHww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@flowbird.group header.s=google header.b=IKZ39F3M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=flowbird.group Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o1si6485213edw.201.2021.06.07.10.38.55; Mon, 07 Jun 2021 10:39:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@flowbird.group header.s=google header.b=IKZ39F3M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=flowbird.group Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230254AbhFGRjz (ORCPT + 99 others); Mon, 7 Jun 2021 13:39:55 -0400 Received: from mail-wr1-f100.google.com ([209.85.221.100]:42703 "EHLO mail-wr1-f100.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229997AbhFGRjz (ORCPT ); Mon, 7 Jun 2021 13:39:55 -0400 Received: by mail-wr1-f100.google.com with SMTP id c5so18518665wrq.9 for ; Mon, 07 Jun 2021 10:38:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=flowbird.group; s=google; h=from:to:cc:subject:date:message-id; bh=cQ0HCecLBzhbySylNjeEx08B0uL27TMXk9h3b7u59u8=; b=IKZ39F3MtKcHSODjiGeVlgghGWdYJpIvhLIwqnMiLNI2IAME2p1/clgRDOsLBARP3o I/QMQVZHsvccukjM/ZCqNoQJivLFJat8c2KXlE/2Jr5t8RPMoYJJiY8yTv5qVK8rKwn7 /JWPKj3yOWf4S5Enu4EqGOgOUyib6I9TON9n3yElHpZ1a/ek/elsfaPTAf8jFQpeXFGZ 4EFbt+RvanRD17t185mxnlFYQ6Pb25QPoXR7YO9aCAIA4dKyI+pB/hLhZdokppTUCIol gd4yhcFqyyYrBRyhQJ9xXrAGjvsQTBifWAyA9ON5H5f1peURrYLBwuyyCknUmJ6CxNnD gryg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=cQ0HCecLBzhbySylNjeEx08B0uL27TMXk9h3b7u59u8=; b=te60ydyMjkS40FHhY0Jh+cKPz8Et6MKT7uibDtk987xlhY9RCCoSRVfHwui+s3i7fn y/mecRN3W88NRmOrVfRN8HTG1FmGz+MFGWknPHysT8oWr7QwB++cnXKd6KspfRk6Q8Us BlElhoP5N5Dk8N2Xxo6/8N3b9cK4cMaElRiA6K50dZ98DPO5pfbLOpAZ6Ctf8qQKN3YF jp2yRN/IjilGSTBPUDuVDzZvJOacknfD3gwGLVI4Vzzd6HoWMcqJB6MeewohxegIznBn /vaHoI44DZIGgoROpAqCWFTdjTV/+Idbk/caZ9/hyAZ4esRKE4iNvKYkv22bw55b3tnl bifQ== X-Gm-Message-State: AOAM531uVypuMMbUuzC5rGQw8/kApSz3YCThXTp587RFrpvprIdd4wTN pEQ6id9S/zEUXtre/B9tNHNc36/yp676rmY6GWhWzeE7udBj X-Received: by 2002:adf:c392:: with SMTP id p18mr18476789wrf.373.1623087422760; Mon, 07 Jun 2021 10:37:02 -0700 (PDT) Received: from mta1.parkeon.com ([185.149.63.251]) by smtp-relay.gmail.com with ESMTPS id s4sm1131512wrv.91.2021.06.07.10.37.02 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 07 Jun 2021 10:37:02 -0700 (PDT) X-Relaying-Domain: flowbird.group Received: from [172.16.14.190] (port=40436 helo=PC12445-BES.dynamic.besancon.parkeon.com) by mta1.parkeon.com with esmtp (Exim 4.71) (envelope-from ) id 1lqJBO-0004zR-EB; Mon, 07 Jun 2021 19:37:02 +0200 From: Martin Fuzzey To: Alessandro Zummo , Alexandre Belloni Cc: Martin Fuzzey , Alexandre Torgue , Amelie Delaunay , linux-rtc@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-kernel@vger.kernel.org Subject: [PATCH] rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path Date: Mon, 7 Jun 2021 19:36:40 +0200 Message-Id: <1623087421-19722-1-git-send-email-martin.fuzzey@flowbird.group> X-Mailer: git-send-email 1.9.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The STM32MP1 RTC may have 2 clocks, the pclk and the rtc_ck. If clk_prepare_enable() fails for the second clock (rtc_ck) we must only call clk_disable_unprepare() for the first clock (pclk) but currently we call it on both leading to a WARN: [ 15.629568] WARNING: CPU: 0 PID: 146 at drivers/clk/clk.c:958 clk_core_disable+0xb0/0xc8 [ 15.637620] ck_rtc already disabled [ 15.663322] CPU: 0 PID: 146 Comm: systemd-udevd Not tainted 5.4.77-pknbsp-svn5759-atag-v5.4.77-204-gea4235203137-dirty #2413 [ 15.674510] Hardware name: STM32 (Device Tree Support) [ 15.679658] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 15.687371] [] (show_stack) from [] (dump_stack+0xc0/0xe0) [ 15.694574] [] (dump_stack) from [] (__warn+0xc8/0xf0) [ 15.701428] [] (__warn) from [] (warn_slowpath_fmt+0x60/0x94) [ 15.708894] [] (warn_slowpath_fmt) from [] (clk_core_disable+0xb0/0xc8) [ 15.717230] [] (clk_core_disable) from [] (clk_core_disable_lock+0x18/0x24) [ 15.725924] [] (clk_core_disable_lock) from [] (stm32_rtc_probe+0x124/0x5e4 [rtc_stm32]) [ 15.735739] [] (stm32_rtc_probe [rtc_stm32]) from [] (platform_drv_probe+0x48/0x98) [ 15.745095] [] (platform_drv_probe) from [] (really_probe+0x1f0/0x458) [ 15.753338] [] (really_probe) from [] (driver_probe_device+0x70/0x1c4) [ 15.761584] [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [ 15.770439] [] (device_driver_attach) from [] (__driver_attach+0xcc/0x170) [ 15.779032] [] (__driver_attach) from [] (bus_for_each_dev+0x58/0x7c) [ 15.787191] [] (bus_for_each_dev) from [] (bus_add_driver+0xdc/0x1f8) [ 15.795352] [] (bus_add_driver) from [] (driver_register+0x7c/0x110) [ 15.803425] [] (driver_register) from [] (do_one_initcall+0x70/0x1b8) [ 15.811588] [] (do_one_initcall) from [] (do_init_module+0x58/0x1f8) [ 15.819660] [] (do_init_module) from [] (load_module+0x1e58/0x23c8) [ 15.827646] [] (load_module) from [] (sys_finit_module+0xa0/0xd4) [ 15.835459] [] (sys_finit_module) from [] (__sys_trace_return+0x0/0x20) Signed-off-by: Martin Fuzzey Fixes: 4e64350f42e2 ("rtc: add STM32 RTC driver") Cc: stable@vger.kernel.org --- drivers/rtc/rtc-stm32.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/rtc/rtc-stm32.c b/drivers/rtc/rtc-stm32.c index 75a8924..ac9e228 100644 --- a/drivers/rtc/rtc-stm32.c +++ b/drivers/rtc/rtc-stm32.c @@ -754,7 +754,7 @@ static int stm32_rtc_probe(struct platform_device *pdev) ret = clk_prepare_enable(rtc->rtc_ck); if (ret) - goto err; + goto err_no_rtc_ck; if (rtc->data->need_dbp) regmap_update_bits(rtc->dbp, rtc->dbp_reg, @@ -830,10 +830,12 @@ static int stm32_rtc_probe(struct platform_device *pdev) } return 0; + err: + clk_disable_unprepare(rtc->rtc_ck); +err_no_rtc_ck: if (rtc->data->has_pclk) clk_disable_unprepare(rtc->pclk); - clk_disable_unprepare(rtc->rtc_ck); if (rtc->data->need_dbp) regmap_update_bits(rtc->dbp, rtc->dbp_reg, rtc->dbp_mask, 0); -- 1.9.1