diff options
Diffstat (limited to 'target/linux/rb532/patches-4.4')
-rw-r--r-- | target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch b/target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch deleted file mode 100644 index 3a67297df0..0000000000 --- a/target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 5833532b49820aa221248f296c207cc50d20ca2d Mon Sep 17 00:00:00 2001 -From: Florian Fainelli <f.fainelli@gmail.com> -Date: Fri, 23 Dec 2016 19:36:31 -0800 -Subject: [PATCH net] net: korina: Fix NAPI versus resources freeing - -Commit beb0babfb77e ("korina: disable napi on close and restart") -introduced calls to napi_disable() that were missing before, -unfortunately this leaves a small window during which NAPI has a chance -to run, yet we just freed resources since korina_free_ring() has been -called: - -Fix this by disabling NAPI first then freeing resource, and make sure -that we also cancel the restart taks before doing the resource freeing. - -Fixes: beb0babfb77e ("korina: disable napi on close and restart") -Reported-by: Alexandros C. Couloumbis <alex@ozo.com> -Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> ---- - drivers/net/ethernet/korina.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - ---- a/drivers/net/ethernet/korina.c -+++ b/drivers/net/ethernet/korina.c -@@ -900,10 +900,10 @@ static void korina_restart_task(struct w - DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR, - &lp->rx_dma_regs->dmasm); - -- korina_free_ring(dev); -- - napi_disable(&lp->napi); - -+ korina_free_ring(dev); -+ - if (korina_init(dev) < 0) { - printk(KERN_ERR "%s: cannot restart device\n", dev->name); - return; -@@ -1064,12 +1064,12 @@ static int korina_close(struct net_devic - tmp = tmp | DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR; - writel(tmp, &lp->rx_dma_regs->dmasm); - -- korina_free_ring(dev); -- - napi_disable(&lp->napi); - - cancel_work_sync(&lp->restart_task); - -+ korina_free_ring(dev); -+ - free_irq(lp->rx_irq, dev); - free_irq(lp->tx_irq, dev); - free_irq(lp->ovr_irq, dev); |