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=-9.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 333B2C43381 for ; Mon, 25 Feb 2019 21:43:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 018DC20842 for ; Mon, 25 Feb 2019 21:43:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551131018; bh=dMUkCp95rtcdWmG3fwdi42a4Zs9y1C47EWZRQPYoaKo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=lsogCGyjbpIL/IvWHl77YAsl9zWVEllkRK0+yI1RP46EPHQnTtVYl16m9f2sDNiVp UC0a6OY3lhvq13kOR4eJLwaEE1RjXEVQ2+c13RxIgJk47QUzE9bmw5hJOM27Lj5gIg rJZv42OFklRMzCT95MxLiAQ9UwkzLJTSgPdax87c= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728071AbfBYVnc (ORCPT ); Mon, 25 Feb 2019 16:43:32 -0500 Received: from mail.kernel.org ([198.145.29.99]:36902 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731854AbfBYVbS (ORCPT ); Mon, 25 Feb 2019 16:31:18 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2868B217F5; Mon, 25 Feb 2019 21:31:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551130277; bh=dMUkCp95rtcdWmG3fwdi42a4Zs9y1C47EWZRQPYoaKo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sqhTDeT5vuCA5dN9IrRffzKAdbff5QokMNjc/gHWQHAkpxvgbY9RO0OEsgDI6WkPW rG55RHeFB58NOlpvn145VMh7gauCkFCJEC71aQw516lzaYSOdtpDWGKQCX4X766au4 xPt1yZD6ihx1sExsz0+C4wum01qpFKBmWfqgb5Nc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Joao Pinto , "David S. Miller" , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , Sasha Levin Subject: [PATCH 4.20 071/183] net: stmmac: Fix PCI module removal leak Date: Mon, 25 Feb 2019 22:10:44 +0100 Message-Id: <20190225195106.457194838@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190225195054.748060397@linuxfoundation.org> References: <20190225195054.748060397@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 6dea7e1881fd86b80da64e476ac398008daed857 ] Since commit b7d0f08e9129, the enable / disable of PCI device is not managed which will result in IO regions not being automatically unmapped. As regions continue mapped it is currently not possible to remove and then probe again the PCI module of stmmac. Fix this by manually unmapping regions on remove callback. Changes from v1: - Fix build error Cc: Joao Pinto Cc: David S. Miller Cc: Giuseppe Cavallaro Cc: Alexandre Torgue Fixes: b7d0f08e9129 ("net: stmmac: Fix WoL for PCI-based setups") Signed-off-by: Jose Abreu Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c index c54a50dbd5ac2..d819e8eaba122 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c @@ -299,7 +299,17 @@ static int stmmac_pci_probe(struct pci_dev *pdev, */ static void stmmac_pci_remove(struct pci_dev *pdev) { + int i; + stmmac_dvr_remove(&pdev->dev); + + for (i = 0; i <= PCI_STD_RESOURCE_END; i++) { + if (pci_resource_len(pdev, i) == 0) + continue; + pcim_iounmap_regions(pdev, BIT(i)); + break; + } + pci_disable_device(pdev); } -- 2.19.1