diff options
-rw-r--r-- | drivers/staging/vt6655/device_main.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c index 1d3908d044d0..5a5fd937a442 100644 --- a/drivers/staging/vt6655/device_main.c +++ b/drivers/staging/vt6655/device_main.c | |||
@@ -2318,6 +2318,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance) { | |||
2318 | int handled = 0; | 2318 | int handled = 0; |
2319 | unsigned char byData = 0; | 2319 | unsigned char byData = 0; |
2320 | int ii = 0; | 2320 | int ii = 0; |
2321 | unsigned long flags; | ||
2321 | 2322 | ||
2322 | MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); | 2323 | MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); |
2323 | 2324 | ||
@@ -2331,7 +2332,8 @@ static irqreturn_t device_intr(int irq, void *dev_instance) { | |||
2331 | 2332 | ||
2332 | handled = 1; | 2333 | handled = 1; |
2333 | MACvIntDisable(pDevice->PortOffset); | 2334 | MACvIntDisable(pDevice->PortOffset); |
2334 | spin_lock_irq(&pDevice->lock); | 2335 | |
2336 | spin_lock_irqsave(&pDevice->lock, flags); | ||
2335 | 2337 | ||
2336 | //Make sure current page is 0 | 2338 | //Make sure current page is 0 |
2337 | VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel); | 2339 | VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel); |
@@ -2560,7 +2562,8 @@ static irqreturn_t device_intr(int irq, void *dev_instance) { | |||
2560 | if (byOrgPageSel == 1) | 2562 | if (byOrgPageSel == 1) |
2561 | MACvSelectPage1(pDevice->PortOffset); | 2563 | MACvSelectPage1(pDevice->PortOffset); |
2562 | 2564 | ||
2563 | spin_unlock_irq(&pDevice->lock); | 2565 | spin_unlock_irqrestore(&pDevice->lock, flags); |
2566 | |||
2564 | MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE); | 2567 | MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE); |
2565 | 2568 | ||
2566 | return IRQ_RETVAL(handled); | 2569 | return IRQ_RETVAL(handled); |