From: John Jacques <john.jacq...@intel.com>

The driver was calling free_irq() without first calling
disable_irq() to synchronize pending and active handlers.
This commit adds a call to disable_irq().

Signed-off-by: John Jacques <john.jacq...@intel.com>
---
 drivers/net/ethernet/lsi/lsi_acp_net.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/lsi/lsi_acp_net.c 
b/drivers/net/ethernet/lsi/lsi_acp_net.c
index a3c72c9..7066679 100644
--- a/drivers/net/ethernet/lsi/lsi_acp_net.c
+++ b/drivers/net/ethernet/lsi/lsi_acp_net.c
@@ -1010,8 +1010,12 @@ static int appnic_stop(struct net_device *dev)
 
        pr_info("%s: Stopping the interface.\n", LSI_DRV_NAME);
 
-       /* Disable all device interrupts. */
+       /* Disable interrupts. Note that disable_irq() will wait for
+        * any interrupt handlers that are currently executing to
+        * complete.
+        */
        write_mac(0, APPNIC_DMA_INTERRUPT_ENABLE);
+       disable_irq(dev->irq);
        free_irq(dev->irq, dev);
 
        /* Indicate to the OS that no more packets should be sent.  */
-- 
1.7.9.5

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to