From patchwork Mon Jul 31 16:54:54 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: 13335045 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 63750C00528 for ; Mon, 31 Jul 2023 16:55:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233581AbjGaQzT (ORCPT ); Mon, 31 Jul 2023 12:55:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53198 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233571AbjGaQzS (ORCPT ); Mon, 31 Jul 2023 12:55:18 -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 844EB1997 for ; Mon, 31 Jul 2023 09:55:13 -0700 (PDT) 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 1qQWAk-0006a1-1g; Mon, 31 Jul 2023 18:55:06 +0200 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 1qQWAf-000AQV-QT; Mon, 31 Jul 2023 18:55:01 +0200 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qQWAe-009NYg-Lt; Mon, 31 Jul 2023 18:55:00 +0200 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Herbert Xu , "David S. Miller" , Maxime Coquelin , Alexandre Torgue , Linus Walleij , Thomas Bourgoin , Lionel Debieve Cc: linux-crypto@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: [PATCH 1/3] crypto: stm32/hash - Properly handle pm_runtime_get failing Date: Mon, 31 Jul 2023 18:54:54 +0200 Message-Id: <20230731165456.799784-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230731165456.799784-1-u.kleine-koenig@pengutronix.de> References: <20230731165456.799784-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1664; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=ksfJOhEF+wM1eM4wshdSHQJwnX6sLZ+kUE6uGM0N1Yk=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBkx+da9X/e6ADAGAs7Lvr+pJrc/jzGV032o2THH hCN3JvyOF6JATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZMfnWgAKCRCPgPtYfRL+ TmpXB/4hUVah+ioCKHXDP1EoZ2NEWzcjE3cHH7ibwhpsHwDJgFg8n8sbisVgv9fGL9Ll3/+04FB eVFZDYJKAdknPd3/d8I7bLUs9pLIc4samHgqUJV5e/XL7LTm/BScp/b2p9iQoIBUFeo+WQj6Epv MgEki4Y55dUQS1/8Z0eSzuIY7tdEgj6y1McOR/wCRR97eaMDrBuWE5gx8xf/7QAf/vWo5CfZa01 S4A61Bpylmj1Z6l6OJKR/nS6WaiTZUt+4BdFrv9hIzGn8GFJgHMBIe7kr0OkTq7hJ/o+Lf/dZaO 2UIeK2+OQSZ661FEqWLnv4T79WK4swgTQgExhxlaJbWOt7eW 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-crypto@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org If pm_runtime_get() (disguised as pm_runtime_resume_and_get()) fails, this means the clk wasn't prepared and enabled. Returning early in this case however is wrong as then the following resource frees are skipped and this is never catched up. So do all the cleanups but clk_disable_unprepare(). Also don't emit a warning, as stm32_hash_runtime_resume() already emitted one. Note that the return value of stm32_hash_remove() is mostly ignored by the device core. The only effect of returning zero instead of an error value is to suppress another warning in platform_remove(). So return 0 even if pm_runtime_resume_and_get() failed. Fixes: 8b4d566de6a5 ("crypto: stm32/hash - Add power management support") Signed-off-by: Uwe Kleine-König --- drivers/crypto/stm32/stm32-hash.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c index 88a186c3dd78..75d281edae2a 100644 --- a/drivers/crypto/stm32/stm32-hash.c +++ b/drivers/crypto/stm32/stm32-hash.c @@ -2121,9 +2121,7 @@ static int stm32_hash_remove(struct platform_device *pdev) if (!hdev) return -ENODEV; - ret = pm_runtime_resume_and_get(hdev->dev); - if (ret < 0) - return ret; + ret = pm_runtime_get_sync(hdev->dev); stm32_hash_unregister_algs(hdev); @@ -2139,7 +2137,8 @@ static int stm32_hash_remove(struct platform_device *pdev) pm_runtime_disable(hdev->dev); pm_runtime_put_noidle(hdev->dev); - clk_disable_unprepare(hdev->clk); + if (ret >= 0) + clk_disable_unprepare(hdev->clk); return 0; } From patchwork Mon Jul 31 16:54:55 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: 13335046 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 B6480C001DE for ; Mon, 31 Jul 2023 16:55:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233583AbjGaQzU (ORCPT ); Mon, 31 Jul 2023 12:55:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233571AbjGaQzT (ORCPT ); Mon, 31 Jul 2023 12:55:19 -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 84B6A1998 for ; Mon, 31 Jul 2023 09:55:13 -0700 (PDT) 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 1qQWAk-0006a2-1i; Mon, 31 Jul 2023 18:55:06 +0200 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 1qQWAf-000AQY-St; Mon, 31 Jul 2023 18:55:01 +0200 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qQWAe-009NYj-T5; Mon, 31 Jul 2023 18:55:00 +0200 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Herbert Xu , "David S. Miller" , Maxime Coquelin , Alexandre Torgue , Linus Walleij , Thomas Bourgoin , Lionel Debieve Cc: linux-crypto@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: [PATCH 2/3] crypto: stm32/hash - Drop if block with always false condition Date: Mon, 31 Jul 2023 18:54:55 +0200 Message-Id: <20230731165456.799784-3-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230731165456.799784-1-u.kleine-koenig@pengutronix.de> References: <20230731165456.799784-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1139; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=ytR44w6YRN9/39C6QY8fX1uvrs6YC4VRP3jW0CSfK4E=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBkx+dbulbrGasJLiVz+QSlpZN4aNuwRTOthCnUy sBwL75kSTuJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZMfnWwAKCRCPgPtYfRL+ TotlCACW/Am2SIw1H/thaOKdb64wke3z0Pp6zVWWJNvJGpJanowdIrFAMxrzcXg9pjiGhMhuzyZ vuKHdeoerW8Alwor3VD/eBFOXvN6w5UH1cc/FbbE3P9qP3H46vR3K+VrapKrrDn6HsN3O1QMDwO Ukc0d97RLSiQ0Im7gZFJIDh9ZjamnKdqEQPf5Kwy99Negw29L7hbfCveYP3d2SvzBoy9PU1YCRG RQtphDBAuo9oVEMn7St+5V+BB14XlB/d265qyMz88zrPy80y/lWkpWI57b3ELXJIny+dIKghWfP SjoWJLt5gQBEPZ2ybOqBa+9ihwtnEf3eDeakwmeLgxnqT9jB 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-crypto@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org stm32_hash_remove() is only called after stm32_hash_probe() succeeded. In this case platform_set_drvdata() was called with a non-NULL data patameter. The check for hdev being non-NULL can be dropped because hdev is never NULL (or something bad like memory corruption happened and then the check doesn't help any more either). Signed-off-by: Uwe Kleine-König --- drivers/crypto/stm32/stm32-hash.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c index 75d281edae2a..b10243035584 100644 --- a/drivers/crypto/stm32/stm32-hash.c +++ b/drivers/crypto/stm32/stm32-hash.c @@ -2114,13 +2114,9 @@ static int stm32_hash_probe(struct platform_device *pdev) static int stm32_hash_remove(struct platform_device *pdev) { - struct stm32_hash_dev *hdev; + struct stm32_hash_dev *hdev = platform_get_drvdata(pdev); int ret; - hdev = platform_get_drvdata(pdev); - if (!hdev) - return -ENODEV; - ret = pm_runtime_get_sync(hdev->dev); stm32_hash_unregister_algs(hdev); From patchwork Mon Jul 31 16:54:56 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: 13335047 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 DA98EC001DE for ; Mon, 31 Jul 2023 16:55:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233606AbjGaQzb (ORCPT ); Mon, 31 Jul 2023 12:55:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233586AbjGaQzW (ORCPT ); Mon, 31 Jul 2023 12:55:22 -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 2F18119A1 for ; Mon, 31 Jul 2023 09:55:13 -0700 (PDT) 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 1qQWAk-0006a4-1k; Mon, 31 Jul 2023 18:55:06 +0200 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 1qQWAg-000AQb-7G; Mon, 31 Jul 2023 18:55:02 +0200 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qQWAf-009NYm-3Y; Mon, 31 Jul 2023 18:55:01 +0200 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Herbert Xu , "David S. Miller" , Maxime Coquelin , Alexandre Torgue , Linus Walleij , Thomas Bourgoin , Lionel Debieve Cc: linux-crypto@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: [PATCH 3/3] crypto: stm32/hash - Convert to platform remove callback returning void Date: Mon, 31 Jul 2023 18:54:56 +0200 Message-Id: <20230731165456.799784-4-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230731165456.799784-1-u.kleine-koenig@pengutronix.de> References: <20230731165456.799784-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1852; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=weXYsfSF7xFoniTuItnSSSLl15yxpaIv25+29WYAieU=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBkx+dc01wufPbTmMWiQXWAlti1lzx1ITCUGCOCk 8fb57m4hmeJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZMfnXAAKCRCPgPtYfRL+ Tqk7B/4qrncfgNDwVNAaX+W2udErsMXbzc+cVKDsdoeZsK8enbimuxgaQ9flTyvMS5dufmGAD88 F5v+PB4tmbSzbdVghRhb4qfwaElxQrBTQhRbGUFKyc41a6gWqubUNgjnkEfbuhZlS5Ncl+kje5V 3SseaZ2UL238lOPIFQg74Nj7cOLBgeXvkDb4nxAfG3BCM9F8kW+PGmjj/NanJRRLBL55iHcSbvd LDbHjXLld9W3lMMsQtPpSKmYfzOBbiXLTDdgnGrGYFoThHkUgJ1UNRvz53ut2gdsi2dztr42tqe 8MeMVJN2N9ys6J5IkRPO4Gr3rP0z5M3VOei0Hrt7RcisCvE0 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-crypto@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@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 ignored (apart from emitting a warning) 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. Eventually after all drivers are converted, .remove_new() is renamed to .remove(). 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/crypto/stm32/stm32-hash.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c index b10243035584..68c52eeaa6b1 100644 --- a/drivers/crypto/stm32/stm32-hash.c +++ b/drivers/crypto/stm32/stm32-hash.c @@ -2112,7 +2112,7 @@ static int stm32_hash_probe(struct platform_device *pdev) return ret; } -static int stm32_hash_remove(struct platform_device *pdev) +static void stm32_hash_remove(struct platform_device *pdev) { struct stm32_hash_dev *hdev = platform_get_drvdata(pdev); int ret; @@ -2135,8 +2135,6 @@ static int stm32_hash_remove(struct platform_device *pdev) if (ret >= 0) clk_disable_unprepare(hdev->clk); - - return 0; } #ifdef CONFIG_PM @@ -2173,7 +2171,7 @@ static const struct dev_pm_ops stm32_hash_pm_ops = { static struct platform_driver stm32_hash_driver = { .probe = stm32_hash_probe, - .remove = stm32_hash_remove, + .remove_new = stm32_hash_remove, .driver = { .name = "stm32-hash", .pm = &stm32_hash_pm_ops,