| From 849e32ca9e54e221e4f1b3f1c99dd58d745080bc 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 b14f0305aa31..ad661d1979c7 100644 |
| --- a/drivers/net/ethernet/microchip/encx24j600.c |
| +++ b/drivers/net/ethernet/microchip/encx24j600.c |
| @@ -1058,7 +1058,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); |
| @@ -1076,6 +1076,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); |
| |
| @@ -1088,6 +1090,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 |
| |