Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2705608pxv; Sun, 11 Jul 2021 23:18:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzP/M9hAc4Qv908BQqJblzEKRhnJaRMBORUTvAcYA0bRwVBiy83cKbpLfY2dqjaZ+yam52C X-Received: by 2002:a5d:80cf:: with SMTP id h15mr38138234ior.30.1626070686063; Sun, 11 Jul 2021 23:18:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626070686; cv=none; d=google.com; s=arc-20160816; b=SKJBLPNeB8QlhzDzwiQLrnVFcun49vGHznnWByfwaZR+74/UTNNP2zISsuy6Q9TNWr IicpbnQpkp6RB/jYHMaKW4cf4YIKFTel6W2PZrY/mr7Od5LY1x4nGWY/wqyvYFdH1/vv Pz9KkHiGkLDIIUna6nZKPYb/dOhSXniGFFVbOA85cJf9cLxJ6/sDMiuB+x6d/CCuCVJV oHuSRBJ7wDGGy/carL3zcl9iaVOtYGHwUkPQ2TokWzk6AMepPr41jWKBlRY/iQugSlPv ywYpYvgkcwsmIQyWZsaER9DUlUpPRk8N85cUeDVOFcP9BDzdMYE9Ko609Mnq7OmOLJ54 tKxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=P+00o8kTRWBjqgnrrUdHMTtN1sSkGZXlTMncQT4l1m8=; b=PzqVseV3AdfDeM8ePYs5PiNXbYR/xnDSLClAgXgF0/HLC9mlZ6n0HGxQO73lzyFgBq GTRaMiltxCb/vlxcCk4LQW9APYA7CEVoO/uFG2klljKGdOO31ahTHKluwsXItJ1YsAYM D76pp1I9vVbE7IOCwPgdZtrLaiIbNxxzodN7GgtfFcRERFGkfnwIWB0y7AGGoHPvbyHq gE7/uIV4dDQx/jvDudNmVTxyPu+oimrjaaV8gkIe4pbZ8qVDKn/2uxHzWJ5UR9x7dIN0 S4F/NWPsAXCiOjNHjQzgU9mGUUAE15OGlAMtmX60BcMQdflBckRisqvUZet5oAC8PNLY 89hQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=F+VLZLkc; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y6si15790248ioj.3.2021.07.11.23.17.54; Sun, 11 Jul 2021 23:18:06 -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=@linuxfoundation.org header.s=korg header.b=F+VLZLkc; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233699AbhGLGTH (ORCPT + 99 others); Mon, 12 Jul 2021 02:19:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:37292 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233625AbhGLGSp (ORCPT ); Mon, 12 Jul 2021 02:18:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 810AD610A7; Mon, 12 Jul 2021 06:15:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626070558; bh=sGmguXc+Zx0QcAO3CULx4eTskHjo3DNXaodOoz40A7E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F+VLZLkc603lUHfb8MVfm6W/xJ2ypDPfFA1kQpdL17I3ZcUwoYFt+RMcfF1v4Xi5n 0WO66BAW+wl2mwTROwKQY3aqdKcT7qmjneK2MrmvOjG8ubrU+tmIk+PfgEy7wT9+ke VGv/f8+wKRNtFPOSVKiAvhOlxDL8Hv85E5JDLLA4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Martin Fuzzey , Nobuhiro Iwamatsu , Alexandre Belloni Subject: [PATCH 5.4 042/348] rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path Date: Mon, 12 Jul 2021 08:07:06 +0200 Message-Id: <20210712060706.673751363@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060659.886176320@linuxfoundation.org> References: <20210712060659.886176320@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Martin Fuzzey commit 950ac33dbe6ff656a623d862022f0762ec061ba7 upstream. 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 Reviewed-by: Nobuhiro Iwamatsu Signed-off-by: Alexandre Belloni Link: https://lore.kernel.org/r/1623087421-19722-1-git-send-email-martin.fuzzey@flowbird.group Signed-off-by: Greg Kroah-Hartman --- drivers/rtc/rtc-stm32.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/drivers/rtc/rtc-stm32.c +++ b/drivers/rtc/rtc-stm32.c @@ -756,7 +756,7 @@ static int stm32_rtc_probe(struct platfo 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, @@ -832,10 +832,12 @@ static int stm32_rtc_probe(struct platfo } 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);