Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp664393ybh; Tue, 10 Mar 2020 06:07:24 -0700 (PDT) X-Google-Smtp-Source: ADFU+vupRF2KGRXqeeYjYYir/ddN5c+/vCJt2m+okmpLtpZz6C9zcS5fXS17wBLZKo/SGvKN7BAs X-Received: by 2002:a9d:66d1:: with SMTP id t17mr15906631otm.235.1583845644612; Tue, 10 Mar 2020 06:07:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583845644; cv=none; d=google.com; s=arc-20160816; b=kQTp6ua6C8ynDxdxUcyuhL9p9XDEVa6jByYOA2WGXd76bCpvvL/jYqNZFaquUEW7vp Yp8wtledeO31Iywwf64DPlEIrZQvbqc+9q3xRZkmvJXwhoFf5ssKV58uLdiYlCw/D3VO 0ktUd78s7m/IlctEBWP+J0e8RDDSA5H0t6EiZQ6+kk7bXKB7O3aQ1JSorORxdj1xXtm7 mVvVLAZ6lIBsNY6NwYW2SuPzjRYl8Kf58Qlv85/p1jbygsQ4/yavpdzajdifaHiI/L5U 6QNk51B/o+DrqKIJHFiPSjWP9XybA8rxX+1SRNOYntFy/KFsSdaPGh634Rwmfu1kXXxF IcBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=zCS+UZY/sV74/jy1Spa/3lUu7+DVFBfBbJrB2ntbp6E=; b=q+1O7RjtNmk7XNdlkTilFvS2aE9DLgDk4HCFoK9C/UbIyX9fggEX4dYqEwfYdqV7G+ Z9A4sk0196RaYWrqMAwxLh4LZpAI325MC80nwl1LgIX2X09B7Vddsgt1kO2iaLRURsjJ u0MgIS+6sHEWYFxc9aG0t5cw7hK5mypxmd0oz8me3tJmbTn7FBszM86tCHk09jXdgddB F+WtyoY9fZVr/dBwP76IERkJw0nf9cDIZcx/Z8tQVibt1iiImTxSN7EFy4fuHMUWMDuz sFd6ETPJrkmKGV30enU+nGMoiD3QwjKQZ7alcDOTcUJcelfSm5yIAJJW6k/tnT6vMbQJ 1Zmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AMFxedS3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l26si5552324oil.11.2020.03.10.06.06.52; Tue, 10 Mar 2020 06:07:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AMFxedS3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729415AbgCJNEX (ORCPT + 99 others); Tue, 10 Mar 2020 09:04:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:49416 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728334AbgCJNEW (ORCPT ); Tue, 10 Mar 2020 09:04:22 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.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 0223A246AA; Tue, 10 Mar 2020 13:04:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583845461; bh=KJoKLhjYPFyRWD4d0UPL8yDXl4UR0+scisZD6bxeLpY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AMFxedS33TPownaWMRCMO2chcfyPx2ogwHvH8BI1ctTUTNpCMNVM9seaULOrB8dS4 dZsFQ9uaFRa5q5qrOMU9aCADTgE8Q9R0SEa94P2YKPTlRJrDIum/arUcxDWUKhrPYb NiyEnLSk5qoYLuo52mWoDfNEdsKK1wUCWs5yqVRE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Aaro Koskinen , "David S. Miller" Subject: [PATCH 5.5 189/189] net: stmmac: fix notifier registration Date: Tue, 10 Mar 2020 13:40:26 +0100 Message-Id: <20200310123658.506018546@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200310123639.608886314@linuxfoundation.org> References: <20200310123639.608886314@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Aaro Koskinen commit 474a31e13a4e9749fb3ee55794d69d0f17ee0998 upstream. We cannot register the same netdev notifier multiple times when probing stmmac devices. Register the notifier only once in module init, and also make debugfs creation/deletion safe against simultaneous notifier call. Fixes: 481a7d154cbb ("stmmac: debugfs entry name is not be changed when udev rename device name.") Signed-off-by: Aaro Koskinen Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -4289,6 +4289,8 @@ static void stmmac_init_fs(struct net_de { struct stmmac_priv *priv = netdev_priv(dev); + rtnl_lock(); + /* Create per netdev entries */ priv->dbgfs_dir = debugfs_create_dir(dev->name, stmmac_fs_dir); @@ -4300,14 +4302,13 @@ static void stmmac_init_fs(struct net_de debugfs_create_file("dma_cap", 0444, priv->dbgfs_dir, dev, &stmmac_dma_cap_fops); - register_netdevice_notifier(&stmmac_notifier); + rtnl_unlock(); } static void stmmac_exit_fs(struct net_device *dev) { struct stmmac_priv *priv = netdev_priv(dev); - unregister_netdevice_notifier(&stmmac_notifier); debugfs_remove_recursive(priv->dbgfs_dir); } #endif /* CONFIG_DEBUG_FS */ @@ -4825,14 +4826,14 @@ int stmmac_dvr_remove(struct device *dev netdev_info(priv->dev, "%s: removing driver", __func__); -#ifdef CONFIG_DEBUG_FS - stmmac_exit_fs(ndev); -#endif stmmac_stop_all_dma(priv); stmmac_mac_set(priv, priv->ioaddr, false); netif_carrier_off(ndev); unregister_netdev(ndev); +#ifdef CONFIG_DEBUG_FS + stmmac_exit_fs(ndev); +#endif phylink_destroy(priv->phylink); if (priv->plat->stmmac_rst) reset_control_assert(priv->plat->stmmac_rst); @@ -5052,6 +5053,7 @@ static int __init stmmac_init(void) /* Create debugfs main directory if it doesn't exist yet */ if (!stmmac_fs_dir) stmmac_fs_dir = debugfs_create_dir(STMMAC_RESOURCE_NAME, NULL); + register_netdevice_notifier(&stmmac_notifier); #endif return 0; @@ -5060,6 +5062,7 @@ static int __init stmmac_init(void) static void __exit stmmac_exit(void) { #ifdef CONFIG_DEBUG_FS + unregister_netdevice_notifier(&stmmac_notifier); debugfs_remove_recursive(stmmac_fs_dir); #endif }