Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4944234ioa; Wed, 27 Apr 2022 15:04:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZHKDUQs2FOgbatzPwnSC9Xs5W7ThFmBV55vm00Ro4PRrVwQhSZePJ0lFUn+Akda87C2ja X-Received: by 2002:a65:46cf:0:b0:399:13b3:dd8b with SMTP id n15-20020a6546cf000000b0039913b3dd8bmr25960812pgr.585.1651097059223; Wed, 27 Apr 2022 15:04:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651097059; cv=none; d=google.com; s=arc-20160816; b=O4DUzOJtM33z41Qqtgz7v0qzzOKzCzsCYrai9lrmhk2NE+rLyCU9058Dv7QaLM0Z1q /A7+Du/PSmjI1zSHQ3L7zi9g7wiRq71ZcQ0vkw/PUWKpD+iXsy/bqkDWkjy/mX3u1juD Dt9epT/lEnd5qm2nOl+sB6scpB4rAaDP2a+jPVQcc2gMeXerhwSBAxf1tkSAHrpjMJSN lX4xGHkkJYknMV45HHgjdHJOZ1lyumILNLKiCW4pYZ0tjuOnAtfKv0xxNFGYJqLpPurs lOmsvnr+VWu0WGeUoePmNf+b0fnzVb+vgaIyIfGZHTwCTjxTCMau++eQ+dlhycTlcOtn NTsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=9gogQQ3UiTmXq8v4QbuR61af86DF+gaaUDrAvsb+IyI=; b=lWS5bTj1lK4+E3YhGO+Te9xxLZ1+Kd4H2L+XJwLgqCH7OB8Q7JcTyPRt3RiYHMjp1S BKbWqdeC4legsKcvZLPYDO4fDge8Nkd77x8J5s43UjGtIyb8IMFOVC5lF43nGYwFegJK kKMrvH40HC2m7V/+4BO8WDiVPgpN58H1VRpv/hZzoiLIdhy/iun+adCdNYFPZgr5ZaG6 k9XHyU5mFUlWdJW8LLFx+evYDXsweqr1N6QQ3qWzhvUK7aMbSu3KT3zguXT+E/i5MM2n OZGyBAvBMjsPjcO8lLg473PKlgl/y9t39qczLIxQEGwfco3Wf51a61GWBWSOhTTB01BI jSgg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m124-20020a625882000000b00505cf611c6bsi2254106pfb.73.2022.04.27.15.04.02; Wed, 27 Apr 2022 15:04:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236332AbiD0Ubx (ORCPT + 99 others); Wed, 27 Apr 2022 16:31:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231933AbiD0Ubv (ORCPT ); Wed, 27 Apr 2022 16:31:51 -0400 Received: from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF120B18B7; Wed, 27 Apr 2022 13:28:39 -0700 (PDT) Received: by jabberwock.ucw.cz (Postfix, from userid 1017) id 0691E1C0B8E; Wed, 27 Apr 2022 22:28:37 +0200 (CEST) Date: Wed, 27 Apr 2022 22:28:36 +0200 From: Pavel Machek To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org, Zhang Qilong , Vinod Koul , Sasha Levin Subject: Re: [PATCH 5.10 14/86] dmaengine: mediatek:Fix PM usage reference leak of mtk_uart_apdma_alloc_chan_resources Message-ID: <20220427202836.GA1337@duo.ucw.cz> References: <20220426081741.202366502@linuxfoundation.org> <20220426081741.617352615@linuxfoundation.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="CE+1k2dSO48ffgeK" Content-Disposition: inline In-Reply-To: <20220426081741.617352615@linuxfoundation.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --CE+1k2dSO48ffgeK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi! > pm_runtime_get_sync will increment pm usage counter even it failed. > Forgetting to putting operation will result in reference leak here. > We fix it: > 1) Replacing it with pm_runtime_resume_and_get to keep usage counter > balanced. Suspect. > 2) Add putting operation before returning error. Yes but you also put in success case, which is likely wrong. mtk_uart_apdma_free_chan_resources() does second put. > +++ b/drivers/dma/mediatek/mtk-uart-apdma.c > @@ -274,7 +274,7 @@ static int mtk_uart_apdma_alloc_chan_resources(struct= dma_chan *chan) > unsigned int status; > int ret; > =20 > - ret =3D pm_runtime_get_sync(mtkd->ddev.dev); > + ret =3D pm_runtime_resume_and_get(mtkd->ddev.dev); > if (ret < 0) { > pm_runtime_put_noidle(chan->device->dev); > return ret; This is suspect, too. What is the put_noidle doing there? Seems like it was meant to undo the get_sync operation, but uses different argument? > @@ -288,18 +288,21 @@ static int mtk_uart_apdma_alloc_chan_resources(stru= ct dma_chan *chan) > =20 > if (mtkd->support_33bits) > mtk_uart_apdma_write(c, VFF_4G_SUPPORT, VFF_4G_SUPPORT_CLR_B); > =20 > +err_pm: > + pm_runtime_put_noidle(mtkd->ddev.dev); > return ret; > } This should only be done in error case. Best regards, Pavel --=20 People of Russia, stop Putin before his war on Ukraine escalates. --CE+1k2dSO48ffgeK Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQRPfPO7r0eAhk010v0w5/Bqldv68gUCYmmndAAKCRAw5/Bqldv6 8ofDAJ9Wn50KlpBHmmRdY76q8yRqCjKaCACcC0Z9sLXZFmOs9LULKyBcCPbpmmE= =N0Sr -----END PGP SIGNATURE----- --CE+1k2dSO48ffgeK--