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 X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD47DC2D0E4 for ; Tue, 24 Nov 2020 10:33:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 69C2D206F9 for ; Tue, 24 Nov 2020 10:33:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732097AbgKXKdH (ORCPT ); Tue, 24 Nov 2020 05:33:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731275AbgKXKdG (ORCPT ); Tue, 24 Nov 2020 05:33:06 -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 48F13C0617A6 for ; Tue, 24 Nov 2020 02:33:06 -0800 (PST) Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1khVd6-0005CI-5Q; Tue, 24 Nov 2020 11:33:00 +0100 Received: from ukl by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1khVd5-0001Aa-NC; Tue, 24 Nov 2020 11:32:59 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Russell King , Greg Kroah-Hartman , Arnd Bergmann , Linus Walleij Cc: Ulf Hansson , Rob Herring , kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] amba: Fix resource leak for drivers without .remove Date: Tue, 24 Nov 2020 11:32:40 +0100 Message-Id: <20201124103242.2971199-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> References: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 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-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Consider an amba driver with a .probe but without a .remove callback (e.g. pl061_gpio_driver). The function amba_probe() is called to bind a device and so dev_pm_domain_attach() and others are called. As there is no remove callback amba_remove() isn't called at unbind time however and so calling dev_pm_domain_detach() is missed and the pm domain keeps active. To fix this always use the core driver callbacks and handle missing amba callbacks there. For probe refuse registration as a driver without probe doesn't make sense. Fixes: 7cfe249475fd ("ARM: AMBA: Add pclk support to AMBA bus infrastructure") Signed-off-by: Uwe Kleine-König --- drivers/amba/bus.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index 8658e0533b67..8c4a42df47c6 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -300,10 +300,11 @@ static int amba_remove(struct device *dev) { struct amba_device *pcdev = to_amba_device(dev); struct amba_driver *drv = to_amba_driver(dev->driver); - int ret; + int ret = 0; pm_runtime_get_sync(dev); - ret = drv->remove(pcdev); + if (drv->remove) + ret = drv->remove(pcdev); pm_runtime_put_noidle(dev); /* Undo the runtime PM settings in amba_probe() */ @@ -320,7 +321,9 @@ static int amba_remove(struct device *dev) static void amba_shutdown(struct device *dev) { struct amba_driver *drv = to_amba_driver(dev->driver); - drv->shutdown(to_amba_device(dev)); + + if (drv->shutdown) + drv->shutdown(to_amba_device(dev)); } /** @@ -333,12 +336,13 @@ static void amba_shutdown(struct device *dev) */ int amba_driver_register(struct amba_driver *drv) { - drv->drv.bus = &amba_bustype; + if (!drv->probe) + return -EINVAL; -#define SETFN(fn) if (drv->fn) drv->drv.fn = amba_##fn - SETFN(probe); - SETFN(remove); - SETFN(shutdown); + drv->drv.bus = &amba_bustype; + drv->drv.probe = amba_probe; + drv->drv.remove = amba_remove; + drv->drv.shutdown = amba_shutdown; return driver_register(&drv->drv); } -- 2.29.2 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 X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E82E7C2D0E4 for ; Tue, 24 Nov 2020 10:34:23 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 71C4A206F9 for ; Tue, 24 Nov 2020 10:34:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="W93qPVQ/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 71C4A206F9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=JdGSm9HI28x/Lgv0CH5hXiQSpuV32wU3B7yCBuoxXko=; b=W93qPVQ/8mLoUOgZn3mefUEgR TNsfEh5HLzHRMAQVU3mkhPnbRHgZuHawCqdLbkc0dPDkp1VTsVJlQGuv7uz4yjnncJZufIXZ6CrqA 4iqCWzjmmyaDllLhLf0NYSO02eB+yPsjhNo12NoNAOT7Kg98Jl/M6RijcRqhlJw1555RvcGrhiQLt Jo3pNnFaXBLekNgdGMY60ko8D8c+egG6omGMtHFSW0eUnBzVdaE7BlPatTKzw65448Bf2XGVxy7XQ xD4ax/UN+hrkf5qMmN9ldriGPA8oATI3/jeuY1bVmVFoQA1CspfdH8WM6XKOUmiResMAUMqxc+GPa WuIQmxsfg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khVdF-0000Tw-9S; Tue, 24 Nov 2020 10:33:09 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khVd9-0000S1-VL for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 10:33:04 +0000 Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1khVd6-0005CI-5Q; Tue, 24 Nov 2020 11:33:00 +0100 Received: from ukl by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1khVd5-0001Aa-NC; Tue, 24 Nov 2020 11:32:59 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Russell King , Greg Kroah-Hartman , Arnd Bergmann , Linus Walleij Subject: [PATCH 2/4] amba: Fix resource leak for drivers without .remove Date: Tue, 24 Nov 2020 11:32:40 +0100 Message-Id: <20201124103242.2971199-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> References: <20201124103242.2971199-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 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-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_053304_099490_989AE3A8 X-CRM114-Status: GOOD ( 20.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Herring , Ulf Hansson , linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de, linux-kernel@vger.kernel.org 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 Q29uc2lkZXIgYW4gYW1iYSBkcml2ZXIgd2l0aCBhIC5wcm9iZSBidXQgd2l0aG91dCBhIC5yZW1v dmUgY2FsbGJhY2sgKGUuZy4KcGwwNjFfZ3Bpb19kcml2ZXIpLiBUaGUgZnVuY3Rpb24gYW1iYV9w cm9iZSgpIGlzIGNhbGxlZCB0byBiaW5kIGEgZGV2aWNlCmFuZCBzbyBkZXZfcG1fZG9tYWluX2F0 dGFjaCgpIGFuZCBvdGhlcnMgYXJlIGNhbGxlZC4gQXMgdGhlcmUgaXMgbm8gcmVtb3ZlCmNhbGxi YWNrIGFtYmFfcmVtb3ZlKCkgaXNuJ3QgY2FsbGVkIGF0IHVuYmluZCB0aW1lIGhvd2V2ZXIgYW5k IHNvIGNhbGxpbmcKZGV2X3BtX2RvbWFpbl9kZXRhY2goKSBpcyBtaXNzZWQgYW5kIHRoZSBwbSBk b21haW4ga2VlcHMgYWN0aXZlLgoKVG8gZml4IHRoaXMgYWx3YXlzIHVzZSB0aGUgY29yZSBkcml2 ZXIgY2FsbGJhY2tzIGFuZCBoYW5kbGUgbWlzc2luZyBhbWJhCmNhbGxiYWNrcyB0aGVyZS4gRm9y IHByb2JlIHJlZnVzZSByZWdpc3RyYXRpb24gYXMgYSBkcml2ZXIgd2l0aG91dCBwcm9iZQpkb2Vz bid0IG1ha2Ugc2Vuc2UuCgpGaXhlczogN2NmZTI0OTQ3NWZkICgiQVJNOiBBTUJBOiBBZGQgcGNs ayBzdXBwb3J0IHRvIEFNQkEgYnVzIGluZnJhc3RydWN0dXJlIikKU2lnbmVkLW9mZi1ieTogVXdl IEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtvZW5pZ0BwZW5ndXRyb25peC5kZT4KLS0tCiBkcml2 ZXJzL2FtYmEvYnVzLmMgfCAyMCArKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDEyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9h bWJhL2J1cy5jIGIvZHJpdmVycy9hbWJhL2J1cy5jCmluZGV4IDg2NThlMDUzM2I2Ny4uOGM0YTQy ZGY0N2M2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FtYmEvYnVzLmMKKysrIGIvZHJpdmVycy9hbWJh L2J1cy5jCkBAIC0zMDAsMTAgKzMwMCwxMSBAQCBzdGF0aWMgaW50IGFtYmFfcmVtb3ZlKHN0cnVj dCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYW1iYV9kZXZpY2UgKnBjZGV2ID0gdG9fYW1iYV9k ZXZpY2UoZGV2KTsKIAlzdHJ1Y3QgYW1iYV9kcml2ZXIgKmRydiA9IHRvX2FtYmFfZHJpdmVyKGRl di0+ZHJpdmVyKTsKLQlpbnQgcmV0OworCWludCByZXQgPSAwOwogCiAJcG1fcnVudGltZV9nZXRf c3luYyhkZXYpOwotCXJldCA9IGRydi0+cmVtb3ZlKHBjZGV2KTsKKwlpZiAoZHJ2LT5yZW1vdmUp CisJCXJldCA9IGRydi0+cmVtb3ZlKHBjZGV2KTsKIAlwbV9ydW50aW1lX3B1dF9ub2lkbGUoZGV2 KTsKIAogCS8qIFVuZG8gdGhlIHJ1bnRpbWUgUE0gc2V0dGluZ3MgaW4gYW1iYV9wcm9iZSgpICov CkBAIC0zMjAsNyArMzIxLDkgQEAgc3RhdGljIGludCBhbWJhX3JlbW92ZShzdHJ1Y3QgZGV2aWNl ICpkZXYpCiBzdGF0aWMgdm9pZCBhbWJhX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldikKIHsK IAlzdHJ1Y3QgYW1iYV9kcml2ZXIgKmRydiA9IHRvX2FtYmFfZHJpdmVyKGRldi0+ZHJpdmVyKTsK LQlkcnYtPnNodXRkb3duKHRvX2FtYmFfZGV2aWNlKGRldikpOworCisJaWYgKGRydi0+c2h1dGRv d24pCisJCWRydi0+c2h1dGRvd24odG9fYW1iYV9kZXZpY2UoZGV2KSk7CiB9CiAKIC8qKgpAQCAt MzMzLDEyICszMzYsMTMgQEAgc3RhdGljIHZvaWQgYW1iYV9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNl ICpkZXYpCiAgKi8KIGludCBhbWJhX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgYW1iYV9kcml2ZXIg KmRydikKIHsKLQlkcnYtPmRydi5idXMgPSAmYW1iYV9idXN0eXBlOworCWlmICghZHJ2LT5wcm9i ZSkKKwkJcmV0dXJuIC1FSU5WQUw7CiAKLSNkZWZpbmUgU0VURk4oZm4pCWlmIChkcnYtPmZuKSBk cnYtPmRydi5mbiA9IGFtYmFfIyNmbgotCVNFVEZOKHByb2JlKTsKLQlTRVRGTihyZW1vdmUpOwot CVNFVEZOKHNodXRkb3duKTsKKwlkcnYtPmRydi5idXMgPSAmYW1iYV9idXN0eXBlOworCWRydi0+ ZHJ2LnByb2JlID0gYW1iYV9wcm9iZTsKKwlkcnYtPmRydi5yZW1vdmUgPSBhbWJhX3JlbW92ZTsK KwlkcnYtPmRydi5zaHV0ZG93biA9IGFtYmFfc2h1dGRvd247CiAKIAlyZXR1cm4gZHJpdmVyX3Jl Z2lzdGVyKCZkcnYtPmRydik7CiB9Ci0tIAoyLjI5LjIKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==