fix a race in ks8695_poll
authorFigo.zhang <figo1802@gmail.com>
Fri, 5 Mar 2010 16:36:02 +0000 (16:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 7 Mar 2010 23:25:49 +0000 (15:25 -0800)
fix a race at the end of NAPI processing in ks8695_poll() function.

Signed-off-by:Figo.zhang <figo1802@gmail.com>

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/arm/ks8695net.c

index 8ca639127dbc8e5494f09baf9f44cf31055bd605..a1d4188c430b6d1ecc321482bba6f46736e88b4f 100644 (file)
@@ -575,9 +575,9 @@ static int ks8695_poll(struct napi_struct *napi, int budget)
        if (work_done < budget) {
                unsigned long flags;
                spin_lock_irqsave(&ksp->rx_lock, flags);
+               __napi_complete(napi);
                /*enable rx interrupt*/
                writel(isr | mask_bit, KS8695_IRQ_VA + KS8695_INTEN);
-               __napi_complete(napi);
                spin_unlock_irqrestore(&ksp->rx_lock, flags);
        }
        return work_done;