Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp854607pxj; Wed, 16 Jun 2021 15:26:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwiTQNTyYWIqQG/4AB9SS5Q3Q4KThqkOtQhl42dOte2lAaZGulBxqlvsLsyBUhaW52MCzKo X-Received: by 2002:a6b:7f02:: with SMTP id l2mr1237836ioq.78.1623882402869; Wed, 16 Jun 2021 15:26:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623882402; cv=none; d=google.com; s=arc-20160816; b=Qs9n91vkIjSeP30BCIx/9tefua+NIEJ1K2QQC8q2nUu9FR0U6OlPvyRsI71tq3uNR6 M1KoSB2Se4smEJropE/2MBfQz+W3bEiuLevk9oJcmwOF+2t3xKih91bh313YSGD+toKl iV05Q1ruTVj7VJ6zJ0qBatAfj8kYWyrtxG6xMiux60CFrr5rLZm5Sr9xcYlz9OX9z0t0 tHYJwKy5BfEuh+AcG4Mr85jO4Zv4z4HqCLmHc0PKzBzSzShI4lmfRf9+3GfB3tZwl7mT B9G+GIHyh4qgV5OYNrjvPxp9xmFEPePw/Z9DkNZnuYErgGJRgQgTA45O2+iqGmnbAZfG p7jg== 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=n0XctAcmkTX27meNWl32fvPE/B+U+HNOdcSpbm7u0BU=; b=nwz2zrq0eY/LAfUvjyrHqgn4sK6DRDxW+iVlrCDL7bJ8Sb6pmfxHhe45ikCvQLnTf2 Quc6W1SE9m1YPbVC3rGHthiYKu/fHiR+oUckc/ONVD4Enk7zZDM0Faye+4c2tLhSLmRL M+rZyiPsdk1VUioGQt6pDFn1dOq1mQXjKl7lzvkp+IO16RvxfANmDZjz0rtxFAdnfqwW 3mGdLuu9oibnuc+mZwTFwsb10427vrBQAF3gxs9/pjRi5D8GV3OZ7QmC1ccpvNKrMBJt 7YRsnpUFKMOZ6D/fPOk8h4C0GsJow7GdiKKlL8RpTnXh6pGTfll5FRhCgBV+q2nnmPQC IiAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=VaVvUGrv; 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 i26si3697750ion.51.2021.06.16.15.25.27; Wed, 16 Jun 2021 15:26:42 -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=VaVvUGrv; 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 S235428AbhFPPln (ORCPT + 99 others); Wed, 16 Jun 2021 11:41:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:50126 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235162AbhFPPi4 (ORCPT ); Wed, 16 Jun 2021 11:38:56 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 59C60613E7; Wed, 16 Jun 2021 15:36:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623857791; bh=D1pfivEPMAKmTrT5Az8xmoAlOLTXunLrF1aVexSumDg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VaVvUGrvRdds78Kc7ubkodskXYuf7q2dfDxEtrNqaJviEiV2Q86s9uV8CJXUIg6VG GmI0PKXgx+bYE0yiwk85+bjXd1WOqc/D1m4APr/HGPECyqIGqZ+Y2CsFy6xTetu4/P ZQmI+WYTK4cRg79918TzxLvDbsjvF1s04bD6dKHw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Pavel Machek (CIP)" , Thierry Reding , Sasha Levin Subject: [PATCH 5.10 10/38] drm/tegra: sor: Do not leak runtime PM reference Date: Wed, 16 Jun 2021 17:33:19 +0200 Message-Id: <20210616152835.727846006@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210616152835.407925718@linuxfoundation.org> References: <20210616152835.407925718@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: Pavel Machek (CIP) [ Upstream commit 73a395c46704304b96bc5e2ee19be31124025c0c ] It's theoretically possible for the runtime PM reference to leak if the code fails anywhere between the pm_runtime_resume_and_get() and pm_runtime_put() calls, so make sure to release the runtime PM reference in that case. Practically this will never happen because none of the functions will fail on Tegra, but it's better for the code to be pedantic in case these assumptions will ever become wrong. Signed-off-by: Pavel Machek (CIP) [treding@nvidia.com: add commit message] Signed-off-by: Thierry Reding Signed-off-by: Sasha Levin --- drivers/gpu/drm/tegra/sor.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c index 7b88261f57bb..67a80dae1c00 100644 --- a/drivers/gpu/drm/tegra/sor.c +++ b/drivers/gpu/drm/tegra/sor.c @@ -3125,21 +3125,21 @@ static int tegra_sor_init(struct host1x_client *client) if (err < 0) { dev_err(sor->dev, "failed to acquire SOR reset: %d\n", err); - return err; + goto rpm_put; } err = reset_control_assert(sor->rst); if (err < 0) { dev_err(sor->dev, "failed to assert SOR reset: %d\n", err); - return err; + goto rpm_put; } } err = clk_prepare_enable(sor->clk); if (err < 0) { dev_err(sor->dev, "failed to enable clock: %d\n", err); - return err; + goto rpm_put; } usleep_range(1000, 3000); @@ -3150,7 +3150,7 @@ static int tegra_sor_init(struct host1x_client *client) dev_err(sor->dev, "failed to deassert SOR reset: %d\n", err); clk_disable_unprepare(sor->clk); - return err; + goto rpm_put; } reset_control_release(sor->rst); @@ -3171,6 +3171,12 @@ static int tegra_sor_init(struct host1x_client *client) } return 0; + +rpm_put: + if (sor->rst) + pm_runtime_put(sor->dev); + + return err; } static int tegra_sor_exit(struct host1x_client *client) -- 2.30.2