Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp3079122imm; Sun, 1 Jul 2018 11:47:02 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfASSb42SmVeQ+Unq3vOfN6JHe5WdRfpPkUZE5pdjHuwiiyXMt5LFVc4X5+6lGTQniVejUc X-Received: by 2002:a17:902:7888:: with SMTP id q8-v6mr17901662pll.79.1530470822076; Sun, 01 Jul 2018 11:47:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530470822; cv=none; d=google.com; s=arc-20160816; b=Z+jZuEA6IaqNGnlGWYVZSk6wJiBzxy89WO/QBi90GYX+X8oLoX/AwKGdR+AlcA5m6N d2eDCgwqXYnKEgWwvFunfp8wTssPwDPkfx5y4/l36hn3t7UobF2nQpNVQUfwZLAjw/Cn tl+017FtgbA2dCFy/FIoEA6Pp3A6+fdtnsBIloUPa1UPmshbmG+/imypQG7SPY7tKzRV fx8cGudEimZVnO5DIDxKjmCgCvwpT5q3zh51paniol0MWRLBres7yR/9idQ7cfdP8wq3 6eA/PzWa98sRlULyFVU5h0Ng8+bUxz8ZdJ4R9MdNcvVvywPJs7PlADPm0Ssy/LEXx2Xc OE8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=K8akNwElqH0AZyRbGIY0O+5yh9L1wDQzrv7fP+lDETg=; b=ixKGxsefE3bFGLU7nGXm/9eIKvm2msE5EzlydulHkZAewURo7usOm9WhaWYwpb3V5A jI0bEPvBUPI31wE/uN3HxB3MxXQIEj7gDjDOKoM24gibamSqtm4HNW5ZQ5uX4iZv6VqR vbM0xwBCpf2FkJUVt3/vz8M5kjukbOIJaLaa28+67kUVSteqvVmX6rwrlVmN35gmL8XG 4P6yaKx32rQfvgaqavW+xZpiEhyeCGN82bzH4GjFVjufCToCsZbzUSkYeHtdYwxU7+Jw vsvbNtYpBZf1IYa9ulwyXUwxORi8wVO0B6ETv7SGhixvrEXty7oiohUAUCjsoxqAss5V nRGw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j5-v6si5140081pgt.370.2018.07.01.11.46.47; Sun, 01 Jul 2018 11:47:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753080AbeGASpA (ORCPT + 99 others); Sun, 1 Jul 2018 14:45:00 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:60022 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932218AbeGAQMx (ORCPT ); Sun, 1 Jul 2018 12:12:53 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 23CA986A; Sun, 1 Jul 2018 16:12:52 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stefan Potyra , Evgeniy Polyakov Subject: [PATCH 3.18 45/85] w1: mxc_w1: Enable clock before calling clk_get_rate() on it Date: Sun, 1 Jul 2018 18:02:03 +0200 Message-Id: <20180701153124.155344258@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180701153122.365061142@linuxfoundation.org> References: <20180701153122.365061142@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Stefan Potyra commit 955bc61328dc0a297fb3baccd84e9d3aee501ed8 upstream. According to the API, you may only call clk_get_rate() after actually enabling it. Found by Linux Driver Verification project (linuxtesting.org). Fixes: a5fd9139f74c ("w1: add 1-wire master driver for i.MX27 / i.MX31") Signed-off-by: Stefan Potyra Acked-by: Evgeniy Polyakov Cc: stable Signed-off-by: Greg Kroah-Hartman --- drivers/w1/masters/mxc_w1.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) --- a/drivers/w1/masters/mxc_w1.c +++ b/drivers/w1/masters/mxc_w1.c @@ -113,6 +113,10 @@ static int mxc_w1_probe(struct platform_ if (IS_ERR(mdev->clk)) return PTR_ERR(mdev->clk); + err = clk_prepare_enable(mdev->clk); + if (err) + return err; + clkrate = clk_get_rate(mdev->clk); if (clkrate < 10000000) dev_warn(&pdev->dev, @@ -126,12 +130,10 @@ static int mxc_w1_probe(struct platform_ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); mdev->regs = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(mdev->regs)) - return PTR_ERR(mdev->regs); - - err = clk_prepare_enable(mdev->clk); - if (err) - return err; + if (IS_ERR(mdev->regs)) { + err = PTR_ERR(mdev->regs); + goto out_disable_clk; + } /* Software reset 1-Wire module */ writeb(MXC_W1_RESET_RST, mdev->regs + MXC_W1_RESET); @@ -147,8 +149,12 @@ static int mxc_w1_probe(struct platform_ err = w1_add_master_device(&mdev->bus_master); if (err) - clk_disable_unprepare(mdev->clk); + goto out_disable_clk; + + return 0; +out_disable_clk: + clk_disable_unprepare(mdev->clk); return err; }