From patchwork Tue Mar 7 21:14:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 660412 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 2FD46C678D5 for ; Tue, 7 Mar 2023 21:14:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231332AbjCGVOq (ORCPT ); Tue, 7 Mar 2023 16:14:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231183AbjCGVOn (ORCPT ); Tue, 7 Mar 2023 16:14:43 -0500 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 24D7C97FCA for ; Tue, 7 Mar 2023 13:14:40 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pZedk-0002H1-LM; Tue, 07 Mar 2023 22:14:32 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pZedj-002ZBb-Gn; Tue, 07 Mar 2023 22:14:31 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pZedi-0037Bc-Qx; Tue, 07 Mar 2023 22:14:30 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Mark Brown , Orson Zhai , Baolin Wang , Chunyan Zhang Cc: linux-spi@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 1/2] spi: sprd: Don't skip cleanup in remove's error path Date: Tue, 7 Mar 2023 22:14:25 +0100 Message-Id: <20230307211426.2331483-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230307211426.2331483-1-u.kleine-koenig@pengutronix.de> References: <20230307211426.2331483-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1530; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=XEYAs5miJYaL3PL0ukKjVbFyEFLZ4zlx4dsmrXQGDEA=; b=owEBbQGS/pANAwAKAcH8FHityuwJAcsmYgBkB6kqihPLeAxx+reEYxHTiWP2bmDHUWxeZaQY5 hV1XpRglOWJATMEAAEKAB0WIQR+cioWkBis/z50pAvB/BR4rcrsCQUCZAepKgAKCRDB/BR4rcrs CZIoB/9vrk8WoE60soVGhHnvaJW4xPW1o72OnB9YvhqYP+qHZINgbo97pbeK+Y6Fyza9mdiVs6Y cBNJAkWal6lBILU7/oI5gSYaoEkvxu65HZYv8inU3plUSuCPTIfXe3fZDbOHo7TPpswQ5jaQMBk zqVYEbULasSKslZecq4FrhlSqh5iHEGxlUZ6ejlOHqVFoP0CK/yqPzHbEhim0XfOby1I/QauO2C sFPapzAXvG+aFtWO3lf8QUwSiZLq2BfclltEKhH0IKksuwOqO3/SEM/8AgvT5V6LPO/nCQoquBq UqCAv1O2Jo8t+mRsqASfB/a2T2NWWjx3qnrmVfjTEPddj8W9 X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-spi@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org If pm_runtime_resume_and_get() failed before this change, two error messages were printed. One directly in sprd_spi_remove() and another by the device core as the return value is non-zero. The better handling of a failure to resume the device is to do the software related cleanup anyhow and only skip hardware accesses. This leaves the device in an unknown state, but there is nothing that can be done about that. Even in the error case, return zero to suppress the device core's error message. Signed-off-by: Uwe Kleine-König --- drivers/spi/spi-sprd.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/spi/spi-sprd.c b/drivers/spi/spi-sprd.c index 65b8075da4eb..45b69b83a7e4 100644 --- a/drivers/spi/spi-sprd.c +++ b/drivers/spi/spi-sprd.c @@ -1008,17 +1008,17 @@ static int sprd_spi_remove(struct platform_device *pdev) struct sprd_spi *ss = spi_controller_get_devdata(sctlr); int ret; - ret = pm_runtime_resume_and_get(ss->dev); - if (ret < 0) { + ret = pm_runtime_get_sync(ss->dev); + if (ret < 0) dev_err(ss->dev, "failed to resume SPI controller\n"); - return ret; - } spi_controller_suspend(sctlr); - if (ss->dma.enable) - sprd_spi_dma_release(ss); - clk_disable_unprepare(ss->clk); + if (ret >= 0) { + if (ss->dma.enable) + sprd_spi_dma_release(ss); + clk_disable_unprepare(ss->clk); + } pm_runtime_put_noidle(&pdev->dev); pm_runtime_disable(&pdev->dev); From patchwork Tue Mar 7 21:14:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 662676 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 DBF03C6FA99 for ; Tue, 7 Mar 2023 21:14:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231183AbjCGVOr (ORCPT ); Tue, 7 Mar 2023 16:14:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231282AbjCGVOn (ORCPT ); Tue, 7 Mar 2023 16:14:43 -0500 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 2B34497FEC for ; Tue, 7 Mar 2023 13:14:40 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pZedk-0002H3-SL; Tue, 07 Mar 2023 22:14:32 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pZedk-002ZBh-6D; Tue, 07 Mar 2023 22:14:32 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pZedj-0037Bf-4y; Tue, 07 Mar 2023 22:14:31 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Mark Brown , Orson Zhai , Baolin Wang , Chunyan Zhang Cc: linux-spi@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 2/2] spi: sprd: Convert to platform remove callback returning void Date: Tue, 7 Mar 2023 22:14:26 +0100 Message-Id: <20230307211426.2331483-3-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230307211426.2331483-1-u.kleine-koenig@pengutronix.de> References: <20230307211426.2331483-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1751; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=YPFkC8LbJTZ62SB1NzUdiepQYlXhcdM1O1GBIgnlyvI=; b=owEBbQGS/pANAwAKAcH8FHityuwJAcsmYgBkB6ktAM0RHU/YY1KZWX7SqkHtzNKkAbnAK4DFX sXA0BiMzGWJATMEAAEKAB0WIQR+cioWkBis/z50pAvB/BR4rcrsCQUCZAepLQAKCRDB/BR4rcrs CVcTB/4rzCb4dMtLnwrgIY0CxHfdhk+TJm6o9IBrXHiX+FHTQecxzleAK0Lw7cjJ+xf8J41ex/L i4aP5qUnLT7jf9gM1Unnjmu5bwMKSdrv6XSB/4dc8NmeaSaTXkhaXuBQtJA7C6+tWHes0S4f4WR 1Fkfq1EsR4csXOdp3jXjBN3iDJ83ryI/XgZRafliJ8rhfNTkiFi4wH4QaLeTOzPpXQjBQl1iSVp 0E7lKjhUvDunzjjTZEbYkHy91aktXWsIX6DpT53TL3XXq+UnM9Xz+jDLD67wPLRQ/ro+dEfh6I9 zbtisarNUDip9JqgNHXb0lLwJwmR1CclYhjWNLMQVgTmMDdo X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-spi@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org The .remove() callback for a platform driver returns an int which makes many driver authors wrongly assume it's possible to do error handling by returning an error code. However the value returned is (mostly) ignored and this typically results in resource leaks. To improve here there is a quest to make the remove callback return void. In the first step of this quest all drivers are converted to .remove_new() which already returns void. Trivially convert this driver from always returning zero in the remove callback to the void returning variant. Signed-off-by: Uwe Kleine-König --- drivers/spi/spi-sprd.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/spi/spi-sprd.c b/drivers/spi/spi-sprd.c index 45b69b83a7e4..702acaeebab2 100644 --- a/drivers/spi/spi-sprd.c +++ b/drivers/spi/spi-sprd.c @@ -1002,7 +1002,7 @@ static int sprd_spi_probe(struct platform_device *pdev) return ret; } -static int sprd_spi_remove(struct platform_device *pdev) +static void sprd_spi_remove(struct platform_device *pdev) { struct spi_controller *sctlr = platform_get_drvdata(pdev); struct sprd_spi *ss = spi_controller_get_devdata(sctlr); @@ -1021,8 +1021,6 @@ static int sprd_spi_remove(struct platform_device *pdev) } pm_runtime_put_noidle(&pdev->dev); pm_runtime_disable(&pdev->dev); - - return 0; } static int __maybe_unused sprd_spi_runtime_suspend(struct device *dev) @@ -1076,7 +1074,7 @@ static struct platform_driver sprd_spi_driver = { .pm = &sprd_spi_pm_ops, }, .probe = sprd_spi_probe, - .remove = sprd_spi_remove, + .remove_new = sprd_spi_remove, }; module_platform_driver(sprd_spi_driver);