From patchwork Sun Jul 15 16:31:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergei Shtylyov X-Patchwork-Id: 10525095 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0FE5D602B3 for ; Sun, 15 Jul 2018 16:31:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E545D27D16 for ; Sun, 15 Jul 2018 16:31:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D845E27DCD; Sun, 15 Jul 2018 16:31:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7B52827D16 for ; Sun, 15 Jul 2018 16:31:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:References:To:From:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=NwrzDG4osecFv8xeq+pwdmYnomKPfwLmkKqzXCs/+iE=; b=KVYEmmg50zCbmN 3PLkgKkskak1VcQRxhdb7ARnJExUk0OMT1ZQaoPktWMeHhKt3NV3iPGBZaW+duyqo0Y52o+Fljr9A YgdhSKsupDrLtUT3PHC3zlUOEXsXrUdkGmkALhwU8QnQ3TidKc3AYHlrG+a2/mhFlyQi67Qhki/VE 8pHVeyU64ddoxCV1IP5RmQhPB3vUiisNiG0h5iL2rQGbneHS2QV6T3rLD/1B6Gb1LzAD2x7L9kzcY PDoso1hxhEdGN0LjtIWyo7uzAU/RirXOJxY8dbZmUUvTfMSK1riefJ/BTYslynY/hVnaAzz8pZ0KD AFmLAo3Zp9xmRyFiMtTQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fejw3-0000QC-RP for patchwork-linux-mediatek@patchwork.kernel.org; Sun, 15 Jul 2018 16:31:47 +0000 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fejvt-0008VW-7M for linux-mediatek@lists.infradead.org; Sun, 15 Jul 2018 16:31:38 +0000 Received: by mail-lf0-x242.google.com with SMTP id n96-v6so30537037lfi.1 for ; Sun, 15 Jul 2018 09:31:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20150623.gappssmtp.com; s=20150623; h=subject:from:to:cc:references:organization:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=2zBnmMhoObKYCb0QN0JGClKTXJ5iCKo3tP16ZaA6If8=; b=Q1tBKuC/TT7dplAEmMvBm3GYi7rHbkJr2rAD2TB0NmQQv7b2rFVkefEAlhOfwlHLVm kk4r8OtkPhN7peq8DvS65fhbZBnwRugD5mZPB9V5Eold1DcBDp6sdvjHhLdwFKgNeBWs Po8YDNuQlkNMgbT3jSwdG+45yNj9dN0WSFIqXYhM+HKdk4BtYtB3XzVvgr4SXLLvfKO1 GTfwONBWw7H5DpxLsZGz1tPTx4g1+2oPbzFa/tk9VHv21Vo5foXaOgPeqUo3BPDSq3Bd l9XDI3ZITRd7pENaWoN1WGuiJqwV/MVTMej0ABya25HwwJS2huEfjvcJsHY5kFl01ckK C7PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=2zBnmMhoObKYCb0QN0JGClKTXJ5iCKo3tP16ZaA6If8=; b=hxm7FrZTfXG8y6uZ5M7XybhIaMbBwHTOPrvPGFHh8y8cBnyZkXj+qax3lwgSGvM2tZ 6zsviSzUnzGJEcreLi87ITMiET2Uv1Cupt31UlHHWjyQ8t3PevIelcRvDiAkuoteZ9hq pl3H0ZWrNvYB8oJskkL4TmFl9bsdbhBYYtAp+MS2vYmMoMP18ClTLpHgVJAPuB1TkVAD AreEnv9Hcj1BjhP6WaNkcjuwYrMmoHPpo6lK9oaugarh0C+4bXGtDzF2bsRiiwbQ7Dt8 GkxhGZBXfopRWwAs0bJUOrUKQS9IwlawzEUc3CRyJhRwC69LMOeJwgeDBKgDpZYz1IaD e5cA== X-Gm-Message-State: AOUpUlGJYhILqNHFH8E+QdFTbJrUF7l1XFd4Aq+bwsC9LziNUiMXqGfx 7ropo8kpRf6D269XhhJH2RLlWZN+rwE= X-Google-Smtp-Source: AAOMgpcWbUUUIRLqV6GCO0+fYgfoUtBDlTtYPHINaNbTzZpiRTLz7kGXKKVB+Jd1rvTQ9EfXHciUqQ== X-Received: by 2002:a19:b24e:: with SMTP id b75-v6mr9048917lff.11.1531672284363; Sun, 15 Jul 2018 09:31:24 -0700 (PDT) Received: from wasted.cogentembedded.com ([31.173.81.22]) by smtp.gmail.com with ESMTPSA id x65-v6sm3444811lfa.77.2018.07.15.09.31.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Jul 2018 09:31:23 -0700 (PDT) Subject: [PATCH 7/8] PCI: mediatek: Fix I/O space page leak From: Sergei Shtylyov To: Bjorn Helgaas , linux-pci@vger.kernel.org, Lorenzo Pieralisi , Ryder Lee , Matthias Brugger References: <3e862a05-084a-d732-3060-6e2b234e9718@cogentembedded.com> Organization: Cogent Embedded Message-ID: <176630c8-6b02-75a5-6d9e-eedc89ee9763@cogentembedded.com> Date: Sun, 15 Jul 2018 19:31:22 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <3e862a05-084a-d732-3060-6e2b234e9718@cogentembedded.com> Content-Language: en-MW X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180715_093137_272223_804EAB8A X-CRM114-Status: GOOD ( 16.65 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP When testing the R-Car PCIe driver on the Condor board, I noticed that if I left the PCIe PHY driver disabled, the kernel crashed with this BUG: [ 1.225819] kernel BUG at lib/ioremap.c:72! [ 1.230007] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP [ 1.235496] Modules linked in: [ 1.238561] CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092 [ 1.245526] Hardware name: Renesas Condor board based on r8a77980 (DT) [ 1.252075] Workqueue: events deferred_probe_work_func [ 1.257220] pstate: 80000005 (Nzcv daif -PAN -UAO) [ 1.262024] pc : ioremap_page_range+0x370/0x3c8 [ 1.266558] lr : ioremap_page_range+0x40/0x3c8 [ 1.271002] sp : ffff000008da39e0 [ 1.274317] x29: ffff000008da39e0 x28: 00e8000000000f07 [ 1.279636] x27: ffff7dfffee00000 x26: 0140000000000000 [ 1.284954] x25: ffff7dfffef00000 x24: 00000000000fe100 [ 1.290272] x23: ffff80007b906000 x22: ffff000008ab8000 [ 1.295590] x21: ffff000008bb1d58 x20: ffff7dfffef00000 [ 1.300909] x19: ffff800009c30fb8 x18: 0000000000000001 [ 1.306226] x17: 00000000000152d0 x16: 00000000014012d0 [ 1.311544] x15: 0000000000000000 x14: 0720072007200720 [ 1.316862] x13: 0720072007200720 x12: 0720072007200720 [ 1.322180] x11: 0720072007300730 x10: 00000000000000ae [ 1.327498] x9 : 0000000000000000 x8 : ffff7dffff000000 [ 1.332816] x7 : 0000000000000000 x6 : 0000000000000100 [ 1.338134] x5 : 0000000000000000 x4 : 000000007b906000 [ 1.343452] x3 : ffff80007c61a880 x2 : ffff7dfffeefffff [ 1.348770] x1 : 0000000040000000 x0 : 00e80000fe100f07 [ 1.354090] Process kworker/0:1 (pid: 39, stack limit = 0x (ptrval)) [ 1.361056] Call trace: [ 1.363504] ioremap_page_range+0x370/0x3c8 [ 1.367695] pci_remap_iospace+0x7c/0xac [ 1.371624] pci_parse_request_of_pci_ranges+0x13c/0x190 [ 1.376945] rcar_pcie_probe+0x4c/0xb04 [ 1.380786] platform_drv_probe+0x50/0xbc [ 1.384799] driver_probe_device+0x21c/0x308 [ 1.389072] __device_attach_driver+0x98/0xc8 [ 1.393431] bus_for_each_drv+0x54/0x94 [ 1.397269] __device_attach+0xc4/0x12c [ 1.401107] device_initial_probe+0x10/0x18 [ 1.405292] bus_probe_device+0x90/0x98 [ 1.409130] deferred_probe_work_func+0xb0/0x150 [ 1.413756] process_one_work+0x12c/0x29c [ 1.417768] worker_thread+0x200/0x3fc [ 1.421522] kthread+0x108/0x134 [ 1.424755] ret_from_fork+0x10/0x18 [ 1.428334] Code: f9004ba2 54000080 aa0003fb 17ffff48 (d4210000) It turned out that pci_remap_iospace() wasn't undone when the driver's probe failed, and since devm_phy_optional_get() returned -EPROBE_DEFER, the probe was retried, finally causing the BUG due to trying to remap already remapped pages. The MediatTek PCIe driver has the same issue. The most feasible solution seemed to introduce devm_pci_remap_iospace() -- which was done in the XGene PCIe driver patch posted earlier... Fixes: 637cfacae96f ("PCI: mediatek: Add MediaTek PCIe host controller support") Signed-off-by: Sergei Shtylyov Reviewed-by: Linus Walleij Acked-by: Bjorn Helgaas --- drivers/pci/controller/pcie-mediatek.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: pci/drivers/pci/controller/pcie-mediatek.c =================================================================== --- pci.orig/drivers/pci/controller/pcie-mediatek.c +++ pci/drivers/pci/controller/pcie-mediatek.c @@ -1109,7 +1109,7 @@ static int mtk_pcie_request_resources(st if (err < 0) return err; - pci_remap_iospace(&pcie->pio, pcie->io.start); + devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start); return 0; }