From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE4F5C00144 for ; Fri, 29 Jul 2022 04:29:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232910AbiG2E3c (ORCPT ); Fri, 29 Jul 2022 00:29:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229973AbiG2E3c (ORCPT ); Fri, 29 Jul 2022 00:29:32 -0400 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 585C277A74 for ; Thu, 28 Jul 2022 21:29:31 -0700 (PDT) Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oHHcp-00024n-Cr; Fri, 29 Jul 2022 06:29:23 +0200 Received: from ore by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1oHHco-0002nN-7x; Fri, 29 Jul 2022 06:29:22 +0200 Date: Fri, 29 Jul 2022 06:29:22 +0200 From: Oleksij Rempel To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: Oleksij Rempel , Shawn Guo , Sascha Hauer , NXP Linux Team , Pengutronix Kernel Team , Fabio Estevam , linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org Subject: Re: [PATCH] i2c: imx: Make sure to unregister adapter on remove() Message-ID: <20220729042922.GD30201@pengutronix.de> References: <20220720150933.239956-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220720150933.239956-1-u.kleine-koenig@pengutronix.de> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-Accept-Language: de,en X-Accept-Content-Type: text/plain User-Agent: Mutt/1.10.1 (2018-07-13) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-i2c@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Hi Uwe, thank you for your work. On Wed, Jul 20, 2022 at 05:09:33PM +0200, Uwe Kleine-König wrote: > If for whatever reasons pm_runtime_resume_and_get() fails and .remove() is > exited early, the i2c adapter stays around and the irq still calls its > handler, while the driver data and the register mapping go away. So if > later the i2c adapter is accessed or the irq triggers this results in > havoc accessing freed memory and unmapped registers. > > So unregister the software resources even if resume failed, and only skip > the hardware access in that case. > > Signed-off-by: Uwe Kleine-König Can you please add Fixes tag. I assume this patch can got to stable kernel version too. Otherwise: Acked-by: Oleksij Rempel > --- > drivers/i2c/busses/i2c-imx.c | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c > index e9e2db68b9fb..7395560c13d0 100644 > --- a/drivers/i2c/busses/i2c-imx.c > +++ b/drivers/i2c/busses/i2c-imx.c > @@ -1572,9 +1572,7 @@ static int i2c_imx_remove(struct platform_device *pdev) > struct imx_i2c_struct *i2c_imx = platform_get_drvdata(pdev); > int irq, ret; > > - ret = pm_runtime_resume_and_get(&pdev->dev); > - if (ret < 0) > - return ret; > + ret = pm_runtime_get_sync(&pdev->dev); > > hrtimer_cancel(&i2c_imx->slave_timer); > > @@ -1585,17 +1583,21 @@ static int i2c_imx_remove(struct platform_device *pdev) > if (i2c_imx->dma) > i2c_imx_dma_free(i2c_imx); > > - /* setup chip registers to defaults */ > - imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IADR); > - imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IFDR); > - imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2CR); > - imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR); > + if (ret == 0) { > + /* setup chip registers to defaults */ > + imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IADR); > + imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IFDR); > + imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2CR); > + imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR); > + clk_disable(i2c_imx->clk); > + } > > clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); > irq = platform_get_irq(pdev, 0); > if (irq >= 0) > free_irq(irq, i2c_imx); > - clk_disable_unprepare(i2c_imx->clk); > + > + clk_unprepare(i2c_imx->clk); > > pm_runtime_put_noidle(&pdev->dev); > pm_runtime_disable(&pdev->dev); > > base-commit: 6014cfa5bf32cf8c5c58b3cfd5ee0e1542c8a825 > -- > 2.36.1 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 821C4C00144 for ; Fri, 29 Jul 2022 04:30:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MBEi2R7j//5/7oAgApdzvc6rPp7mz+j4MzxSmxH/ZKA=; b=J3TQgzFUd7c8tr kczz+OZLp1bwljxxtEF+zf1KAKEfa/ygQGuJ15dKaC59Ac/awsDyYQSJJHaTr+UnX0j5HJ/hmsx/R lXrwjl5h8yinjvSSSX9UfnjgpnNxgWVXNgRQ9k50b+gB7v/t1xVHqHUmmqbw7d8q/pihwcTTnj6W0 i2NIMMMqh4JMXrevrKrzqqVqSLZV3nGoTdyhR7kgwz6TuBV8tnMPQsjRp6NnA4Nh+j1qOuXukbxGt GofK+p7blaagto9ty6JNxrd6idxMcSIRT75AvhkdGAsQ1WnrtSyiD4bqRFgkejuQ/XKqfGitVPpri Ujlh3eS2/ZGCWSF6oKfA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oHHd1-000UBO-24; Fri, 29 Jul 2022 04:29:35 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oHHcx-000U98-KX for linux-arm-kernel@lists.infradead.org; Fri, 29 Jul 2022 04:29:33 +0000 Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oHHcp-00024n-Cr; Fri, 29 Jul 2022 06:29:23 +0200 Received: from ore by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1oHHco-0002nN-7x; Fri, 29 Jul 2022 06:29:22 +0200 Date: Fri, 29 Jul 2022 06:29:22 +0200 From: Oleksij Rempel To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: Oleksij Rempel , Shawn Guo , Sascha Hauer , NXP Linux Team , Pengutronix Kernel Team , Fabio Estevam , linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org Subject: Re: [PATCH] i2c: imx: Make sure to unregister adapter on remove() Message-ID: <20220729042922.GD30201@pengutronix.de> References: <20220720150933.239956-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220720150933.239956-1-u.kleine-koenig@pengutronix.de> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-Accept-Language: de,en X-Accept-Content-Type: text/plain User-Agent: Mutt/1.10.1 (2018-07-13) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220728_212931_696389_CF18F90B X-CRM114-Status: GOOD ( 30.07 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgVXdlLAoKdGhhbmsgeW91IGZvciB5b3VyIHdvcmsuCgpPbiBXZWQsIEp1bCAyMCwgMjAyMiBh dCAwNTowOTozM1BNICswMjAwLCBVd2UgS2xlaW5lLUvDtm5pZyB3cm90ZToKPiBJZiBmb3Igd2hh dGV2ZXIgcmVhc29ucyBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KCkgZmFpbHMgYW5kIC5yZW1v dmUoKSBpcwo+IGV4aXRlZCBlYXJseSwgdGhlIGkyYyBhZGFwdGVyIHN0YXlzIGFyb3VuZCBhbmQg dGhlIGlycSBzdGlsbCBjYWxscyBpdHMKPiBoYW5kbGVyLCB3aGlsZSB0aGUgZHJpdmVyIGRhdGEg YW5kIHRoZSByZWdpc3RlciBtYXBwaW5nIGdvIGF3YXkuIFNvIGlmCj4gbGF0ZXIgdGhlIGkyYyBh ZGFwdGVyIGlzIGFjY2Vzc2VkIG9yIHRoZSBpcnEgdHJpZ2dlcnMgdGhpcyByZXN1bHRzIGluCj4g aGF2b2MgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeSBhbmQgdW5tYXBwZWQgcmVnaXN0ZXJzLgo+IAo+ IFNvIHVucmVnaXN0ZXIgdGhlIHNvZnR3YXJlIHJlc291cmNlcyBldmVuIGlmIHJlc3VtZSBmYWls ZWQsIGFuZCBvbmx5IHNraXAKPiB0aGUgaGFyZHdhcmUgYWNjZXNzIGluIHRoYXQgY2FzZS4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVpbmUta29lbmlnQHBlbmd1 dHJvbml4LmRlPgoKQ2FuIHlvdSBwbGVhc2UgYWRkIEZpeGVzIHRhZy4gSSBhc3N1bWUgdGhpcyBw YXRjaCBjYW4gZ290IHRvIHN0YWJsZQprZXJuZWwgdmVyc2lvbiB0b28uCgpPdGhlcndpc2U6CkFj a2VkLWJ5OiBPbGVrc2lqIFJlbXBlbCA8by5yZW1wZWxAcGVuZ3V0cm9uaXguZGU+Cgo+IC0tLQo+ ICBkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlteC5jIHwgMjAgKysrKysrKysrKystLS0tLS0tLS0K PiAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW14LmMgYi9kcml2ZXJzL2kyYy9i dXNzZXMvaTJjLWlteC5jCj4gaW5kZXggZTllMmRiNjhiOWZiLi43Mzk1NTYwYzEzZDAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXguYwo+ICsrKyBiL2RyaXZlcnMvaTJj L2J1c3Nlcy9pMmMtaW14LmMKPiBAQCAtMTU3Miw5ICsxNTcyLDcgQEAgc3RhdGljIGludCBpMmNf aW14X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJc3RydWN0IGlteF9p MmNfc3RydWN0ICppMmNfaW14ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gIAlpbnQg aXJxLCByZXQ7Cj4gIAo+IC0JcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCgmcGRldi0+ ZGV2KTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4gKwlyZXQgPSBwbV9ydW50 aW1lX2dldF9zeW5jKCZwZGV2LT5kZXYpOwo+ICAKPiAgCWhydGltZXJfY2FuY2VsKCZpMmNfaW14 LT5zbGF2ZV90aW1lcik7Cj4gIAo+IEBAIC0xNTg1LDE3ICsxNTgzLDIxIEBAIHN0YXRpYyBpbnQg aTJjX2lteF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWlmIChpMmNf aW14LT5kbWEpCj4gIAkJaTJjX2lteF9kbWFfZnJlZShpMmNfaW14KTsKPiAgCj4gLQkvKiBzZXR1 cCBjaGlwIHJlZ2lzdGVycyB0byBkZWZhdWx0cyAqLwo+IC0JaW14X2kyY193cml0ZV9yZWcoMCwg aTJjX2lteCwgSU1YX0kyQ19JQURSKTsKPiAtCWlteF9pMmNfd3JpdGVfcmVnKDAsIGkyY19pbXgs IElNWF9JMkNfSUZEUik7Cj4gLQlpbXhfaTJjX3dyaXRlX3JlZygwLCBpMmNfaW14LCBJTVhfSTJD X0kyQ1IpOwo+IC0JaW14X2kyY193cml0ZV9yZWcoMCwgaTJjX2lteCwgSU1YX0kyQ19JMlNSKTsK PiArCWlmIChyZXQgPT0gMCkgewo+ICsJCS8qIHNldHVwIGNoaXAgcmVnaXN0ZXJzIHRvIGRlZmF1 bHRzICovCj4gKwkJaW14X2kyY193cml0ZV9yZWcoMCwgaTJjX2lteCwgSU1YX0kyQ19JQURSKTsK PiArCQlpbXhfaTJjX3dyaXRlX3JlZygwLCBpMmNfaW14LCBJTVhfSTJDX0lGRFIpOwo+ICsJCWlt eF9pMmNfd3JpdGVfcmVnKDAsIGkyY19pbXgsIElNWF9JMkNfSTJDUik7Cj4gKwkJaW14X2kyY193 cml0ZV9yZWcoMCwgaTJjX2lteCwgSU1YX0kyQ19JMlNSKTsKPiArCQljbGtfZGlzYWJsZShpMmNf aW14LT5jbGspOwo+ICsJfQo+ICAKPiAgCWNsa19ub3RpZmllcl91bnJlZ2lzdGVyKGkyY19pbXgt PmNsaywgJmkyY19pbXgtPmNsa19jaGFuZ2VfbmIpOwo+ICAJaXJxID0gcGxhdGZvcm1fZ2V0X2ly cShwZGV2LCAwKTsKPiAgCWlmIChpcnEgPj0gMCkKPiAgCQlmcmVlX2lycShpcnEsIGkyY19pbXgp Owo+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGkyY19pbXgtPmNsayk7Cj4gKwo+ICsJY2xrX3Vu cHJlcGFyZShpMmNfaW14LT5jbGspOwo+ICAKPiAgCXBtX3J1bnRpbWVfcHV0X25vaWRsZSgmcGRl di0+ZGV2KTsKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsKPiAKPiBiYXNlLWNv bW1pdDogNjAxNGNmYTViZjMyY2Y4YzVjNThiM2NmZDVlZTBlMTU0MmM4YTgyNQo+IC0tIAo+IDIu MzYuMQo+IAo+IAo+IAoKLS0gClBlbmd1dHJvbml4IGUuSy4gICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ClN0ZXVlcndhbGRlciBTdHIuIDIx ICAgICAgICAgICAgICAgICAgICAgICB8IGh0dHA6Ly93d3cucGVuZ3V0cm9uaXguZGUvICB8CjMx MTM3IEhpbGRlc2hlaW0sIEdlcm1hbnkgICAgICAgICAgICAgICAgICB8IFBob25lOiArNDktNTEy MS0yMDY5MTctMCAgICB8CkFtdHNnZXJpY2h0IEhpbGRlc2hlaW0sIEhSQSAyNjg2ICAgICAgICAg ICB8IEZheDogICArNDktNTEyMS0yMDY5MTctNTU1NSB8CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==