* [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices
@ 2024-02-15 15:15 hsimeliere.opensource
2024-02-15 15:15 ` [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions hsimeliere.opensource
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: hsimeliere.opensource @ 2024-02-15 15:15 UTC (permalink / raw)
To: stable
Fix kernel freeze reproduced when probing stmmac devices on kernel 4.19:
Upstream commit 474a31e13a4e9749fb3ee55794d69d0f17ee0998 to fix freeze and
upstream commit 8d72ab119f42f25abb393093472ae0ca275088b6 to apply the fix correctly.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions
2024-02-15 15:15 [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices hsimeliere.opensource
@ 2024-02-15 15:15 ` hsimeliere.opensource
2024-02-16 22:34 ` Jacob Keller
2024-02-15 15:15 ` [PATCH stmmac 4.19 2/2] net: stmmac: fix notifier registration hsimeliere.opensource
2024-02-23 13:14 ` [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices Greg KH
2 siblings, 1 reply; 5+ messages in thread
From: hsimeliere.opensource @ 2024-02-15 15:15 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, Giuseppe Cavallaro, Alexandre Torgue,
Jose Abreu, David S. Miller, Maxime Coquelin, netdev, linux-stm32,
Hugo SIMELIERE
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[ Upstream commit 8d72ab119f42f25abb393093472ae0ca275088b6 ]
When calling debugfs functions, there is no need to ever check the
return value. The function can work or not, but the code logic should
never do something different based on this.
Because we don't care about the individual files, we can remove the
stored dentry for the files, as they are not needed to be kept track of
at all.
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 -
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 52 +++----------------
2 files changed, 8 insertions(+), 46 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
index 63e1064b27a2..5ec268817ee4 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
@@ -188,8 +188,6 @@ struct stmmac_priv {
#ifdef CONFIG_DEBUG_FS
struct dentry *dbgfs_dir;
- struct dentry *dbgfs_rings_status;
- struct dentry *dbgfs_dma_cap;
#endif
unsigned long state;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 3e35cdf0d2b7..6ee9c447ac43 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -115,7 +115,7 @@ static irqreturn_t stmmac_interrupt(int irq, void *dev_id);
#ifdef CONFIG_DEBUG_FS
static const struct net_device_ops stmmac_netdev_ops;
-static int stmmac_init_fs(struct net_device *dev);
+static void stmmac_init_fs(struct net_device *dev);
static void stmmac_exit_fs(struct net_device *dev);
#endif
@@ -4063,47 +4063,22 @@ static struct notifier_block stmmac_notifier = {
.notifier_call = stmmac_device_event,
};
-static int stmmac_init_fs(struct net_device *dev)
+static void stmmac_init_fs(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
/* Create per netdev entries */
priv->dbgfs_dir = debugfs_create_dir(dev->name, stmmac_fs_dir);
- if (!priv->dbgfs_dir || IS_ERR(priv->dbgfs_dir)) {
- netdev_err(priv->dev, "ERROR failed to create debugfs directory\n");
-
- return -ENOMEM;
- }
-
/* Entry to report DMA RX/TX rings */
- priv->dbgfs_rings_status =
- debugfs_create_file("descriptors_status", 0444,
- priv->dbgfs_dir, dev,
- &stmmac_rings_status_fops);
-
- if (!priv->dbgfs_rings_status || IS_ERR(priv->dbgfs_rings_status)) {
- netdev_err(priv->dev, "ERROR creating stmmac ring debugfs file\n");
- debugfs_remove_recursive(priv->dbgfs_dir);
-
- return -ENOMEM;
- }
+ debugfs_create_file("descriptors_status", 0444, priv->dbgfs_dir, dev,
+ &stmmac_rings_status_fops);
/* Entry to report the DMA HW features */
- priv->dbgfs_dma_cap = debugfs_create_file("dma_cap", 0444,
- priv->dbgfs_dir,
- dev, &stmmac_dma_cap_fops);
-
- if (!priv->dbgfs_dma_cap || IS_ERR(priv->dbgfs_dma_cap)) {
- netdev_err(priv->dev, "ERROR creating stmmac MMC debugfs file\n");
- debugfs_remove_recursive(priv->dbgfs_dir);
-
- return -ENOMEM;
- }
+ debugfs_create_file("dma_cap", 0444, priv->dbgfs_dir, dev,
+ &stmmac_dma_cap_fops);
register_netdevice_notifier(&stmmac_notifier);
-
- return 0;
}
static void stmmac_exit_fs(struct net_device *dev)
@@ -4442,10 +4417,7 @@ int stmmac_dvr_probe(struct device *device,
}
#ifdef CONFIG_DEBUG_FS
- ret = stmmac_init_fs(ndev);
- if (ret < 0)
- netdev_warn(priv->dev, "%s: failed debugFS registration\n",
- __func__);
+ stmmac_init_fs(ndev);
#endif
return ret;
@@ -4705,16 +4677,8 @@ static int __init stmmac_init(void)
{
#ifdef CONFIG_DEBUG_FS
/* Create debugfs main directory if it doesn't exist yet */
- if (!stmmac_fs_dir) {
+ if (!stmmac_fs_dir)
stmmac_fs_dir = debugfs_create_dir(STMMAC_RESOURCE_NAME, NULL);
-
- if (!stmmac_fs_dir || IS_ERR(stmmac_fs_dir)) {
- pr_err("ERROR %s, debugfs create directory failed\n",
- STMMAC_RESOURCE_NAME);
-
- return -ENOMEM;
- }
- }
#endif
return 0;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH stmmac 4.19 2/2] net: stmmac: fix notifier registration
2024-02-15 15:15 [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices hsimeliere.opensource
2024-02-15 15:15 ` [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions hsimeliere.opensource
@ 2024-02-15 15:15 ` hsimeliere.opensource
2024-02-23 13:14 ` [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices Greg KH
2 siblings, 0 replies; 5+ messages in thread
From: hsimeliere.opensource @ 2024-02-15 15:15 UTC (permalink / raw)
To: stable; +Cc: Aaro Koskinen, David S . Miller, Hugo SIMELIERE
From: Aaro Koskinen <aaro.koskinen@nokia.com>
[ Upstream commit 474a31e13a4e9749fb3ee55794d69d0f17ee0998 ]
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 <aaro.koskinen@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 6ee9c447ac43..f62622410355 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -4067,6 +4067,8 @@ static void stmmac_init_fs(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
+ rtnl_lock();
+
/* Create per netdev entries */
priv->dbgfs_dir = debugfs_create_dir(dev->name, stmmac_fs_dir);
@@ -4078,14 +4080,13 @@ static void stmmac_init_fs(struct net_device *dev)
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 */
@@ -4455,14 +4456,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
if (priv->plat->stmmac_rst)
reset_control_assert(priv->plat->stmmac_rst);
clk_disable_unprepare(priv->plat->pclk);
@@ -4679,6 +4680,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;
@@ -4687,6 +4689,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
}
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions
2024-02-15 15:15 ` [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions hsimeliere.opensource
@ 2024-02-16 22:34 ` Jacob Keller
0 siblings, 0 replies; 5+ messages in thread
From: Jacob Keller @ 2024-02-16 22:34 UTC (permalink / raw)
To: hsimeliere.opensource, stable
Cc: Greg Kroah-Hartman, Giuseppe Cavallaro, Alexandre Torgue,
Jose Abreu, David S. Miller, Maxime Coquelin, netdev, linux-stm32
On 2/15/2024 7:15 AM, hsimeliere.opensource@witekio.com wrote:
> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> [ Upstream commit 8d72ab119f42f25abb393093472ae0ca275088b6 ]
>
> When calling debugfs functions, there is no need to ever check the
> return value. The function can work or not, but the code logic should
> never do something different based on this.
>
> Because we don't care about the individual files, we can remove the
> stored dentry for the files, as they are not needed to be kept track of
> at all.
>
> Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> Cc: Alexandre Torgue <alexandre.torgue@st.com>
> Cc: Jose Abreu <joabreu@synopsys.com>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-stm32@st-md-mailman.stormreply.com
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: David S. Miller <davem@davemloft.net>
> Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
> ---
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices
2024-02-15 15:15 [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices hsimeliere.opensource
2024-02-15 15:15 ` [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions hsimeliere.opensource
2024-02-15 15:15 ` [PATCH stmmac 4.19 2/2] net: stmmac: fix notifier registration hsimeliere.opensource
@ 2024-02-23 13:14 ` Greg KH
2 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2024-02-23 13:14 UTC (permalink / raw)
To: hsimeliere.opensource; +Cc: stable
On Thu, Feb 15, 2024 at 04:15:25PM +0100, hsimeliere.opensource@witekio.com wrote:
> Fix kernel freeze reproduced when probing stmmac devices on kernel 4.19:
> Upstream commit 474a31e13a4e9749fb3ee55794d69d0f17ee0998 to fix freeze and
> upstream commit 8d72ab119f42f25abb393093472ae0ca275088b6 to apply the fix correctly.
>
>
All now queued up, thanks.
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-02-23 13:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-15 15:15 [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices hsimeliere.opensource
2024-02-15 15:15 ` [PATCH stmmac 4.19 1/2] stmmac: no need to check return value of debugfs_create functions hsimeliere.opensource
2024-02-16 22:34 ` Jacob Keller
2024-02-15 15:15 ` [PATCH stmmac 4.19 2/2] net: stmmac: fix notifier registration hsimeliere.opensource
2024-02-23 13:14 ` [PATCH stmmac 4.19 0/2] Fix kernel freeze when probing stmmac devices Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox