From patchwork Sun Jul 15 16:34: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: 10525097 X-Patchwork-Delegate: bhelgaas@google.com 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 15C3560245 for ; Sun, 15 Jul 2018 16:34:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 03BE12891F for ; Sun, 15 Jul 2018 16:34:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EBDBC28926; Sun, 15 Jul 2018 16:34:28 +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=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5733A2891F for ; Sun, 15 Jul 2018 16:34:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726638AbeGOQ54 (ORCPT ); Sun, 15 Jul 2018 12:57:56 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:37289 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726485AbeGOQ54 (ORCPT ); Sun, 15 Jul 2018 12:57:56 -0400 Received: by mail-lj1-f196.google.com with SMTP id v9-v6so17652629ljk.4 for ; Sun, 15 Jul 2018 09:34:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20150623.gappssmtp.com; s=20150623; h=subject:from:to:references:organization:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=4RFZDqtrWetL4w80rD7UFCwufIdE+bXMlWc46WoUw9E=; b=1M1ay4EJFP1/r7A9UKiXpmhsBCTCzcRvtLpCVpD9dZ+NAJ4MSl+QePKuEPjXnQYdmc fTDuj5AEYW7RSzPVronmNIgODWF1lh52h8bkAp3nIHRzmrp9OL/VOqRe25iEaoABcKJ2 sDdoZHys0KNn56i7KuW+FSDA2ZwaBLSoIU+N2WoQ3pSGNcfD4QgN4PoMmUZQ9RAdIfDf tjmnIwk1kEjCEzylDis7ufybQkM0cr1CdYnsLB33o29UHC0wM2knb70DtH3js+8fnX9Z HsCX+aN6zQit2GAROv3nfpFIO9HmEBYrsrvIuSUiM8hkR0OWSWvfRwaWoJgxsDEE1FN4 u2cw== 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:references:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=4RFZDqtrWetL4w80rD7UFCwufIdE+bXMlWc46WoUw9E=; b=h8/J3zelvIMMTtnnLkMwbTder6LMwPr4Aiz55MGaVi3heJPiH2BBE6IVKrjg2p00Hq UXQfCi5+No1GQDJ5RP6ZZQvcfOswC1KhGiXYrQv/MGK83yX4B7k/0EDoVys291uNTZ1s fJiMMYQwdvkK5j2gmcpe8VhEe9ET19M7xCpcTkYWrsYBR5zIxQKEH1xShR7YROomvTE8 iYml7fQ+yWc6UEpkEjXxc0JWnNw86dK3ruqjutOx+vi7B4MhXMbPKQLBYnF2YYxdHbap GLsa3nq2AptuqoEM9ssavAuNj7hQRntLsFH+/vC9/obbvXLTsetTVWcWaxDfr2CJDwBn y5fg== X-Gm-Message-State: AOUpUlGTc66wFeybuUNN6ojVLh/rWogOIN+/SJYOG51Y8GFpl8WobLKb zy900g7iAA64xO45kcedA/ygAQ== X-Google-Smtp-Source: AAOMgpdAYkEC3WwlwQCIoBKKD2rIMZ6YUERFw4SLCQNmq3O4CahXjI8G5uOVRNEL0Ux/gVgzlmvb9Q== X-Received: by 2002:a2e:83cf:: with SMTP id s15-v6mr6707258ljh.101.1531672464511; Sun, 15 Jul 2018 09:34:24 -0700 (PDT) Received: from wasted.cogentembedded.com ([31.173.81.22]) by smtp.gmail.com with ESMTPSA id f198-v6sm4731653lfg.86.2018.07.15.09.34.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Jul 2018 09:34:23 -0700 (PDT) Subject: [PATCH 8/8] PCI: v3-semi: Fix I/O space page leak From: Sergei Shtylyov To: Bjorn Helgaas , linux-pci@vger.kernel.org, Lorenzo Pieralisi , Linus Walleij References: <3e862a05-084a-d732-3060-6e2b234e9718@cogentembedded.com> Organization: Cogent Embedded Message-ID: Date: Sun, 15 Jul 2018 19:34: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 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.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 V3 Semiconductor PCI 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: 68a15eb7bd0c ("PCI: v3-semi: Add V3 Semiconductor PCI host driver") Signed-off-by: Sergei Shtylyov Reviewed-by: Linus Walleij Acked-by: Bjorn Helgaas --- drivers/pci/controller/pci-v3-semi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: pci/drivers/pci/controller/pci-v3-semi.c =================================================================== --- pci.orig/drivers/pci/controller/pci-v3-semi.c +++ pci/drivers/pci/controller/pci-v3-semi.c @@ -537,7 +537,7 @@ static int v3_pci_setup_resource(struct v3->io_bus_addr = io->start - win->offset; dev_dbg(dev, "I/O window %pR, bus addr %pap\n", io, &v3->io_bus_addr); - ret = pci_remap_iospace(io, io_base); + ret = devm_pci_remap_iospace(dev, io, io_base); if (ret) { dev_warn(dev, "error %d: failed to map resource %pR\n",