| From bdcf1b56292a430bc5a8bd10b0e26696801b70dc Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 7 May 2020 23:13:20 +0800 |
| Subject: net: microchip: encx24j600: add missed kthread_stop |
| |
| From: Chuhong Yuan <hslester96@gmail.com> |
| |
| [ Upstream commit ff8ce319e9c25e920d994cc35236f0bb32dfc8f3 ] |
| |
| This driver calls kthread_run() in probe, but forgets to call |
| kthread_stop() in probe failure and remove. |
| Add the missed kthread_stop() to fix it. |
| |
| Signed-off-by: Chuhong Yuan <hslester96@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/microchip/encx24j600.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c |
| index f831238d9793..84b6ad76f5bc 100644 |
| --- a/drivers/net/ethernet/microchip/encx24j600.c |
| +++ b/drivers/net/ethernet/microchip/encx24j600.c |
| @@ -1075,7 +1075,7 @@ static int encx24j600_spi_probe(struct spi_device *spi) |
| if (unlikely(ret)) { |
| netif_err(priv, probe, ndev, "Error %d initializing card encx24j600 card\n", |
| ret); |
| - goto out_free; |
| + goto out_stop; |
| } |
| |
| eidled = encx24j600_read_reg(priv, EIDLED); |
| @@ -1093,6 +1093,8 @@ static int encx24j600_spi_probe(struct spi_device *spi) |
| |
| out_unregister: |
| unregister_netdev(priv->ndev); |
| +out_stop: |
| + kthread_stop(priv->kworker_task); |
| out_free: |
| free_netdev(ndev); |
| |
| @@ -1105,6 +1107,7 @@ static int encx24j600_spi_remove(struct spi_device *spi) |
| struct encx24j600_priv *priv = dev_get_drvdata(&spi->dev); |
| |
| unregister_netdev(priv->ndev); |
| + kthread_stop(priv->kworker_task); |
| |
| free_netdev(priv->ndev); |
| |
| -- |
| 2.25.1 |
| |