| From 6cff1f6ad4c615319c1a146b2aa0af1043c5e9f5 Mon Sep 17 00:00:00 2001 |
| From: Malcolm Priestley <tvboxspy@gmail.com> |
| Date: Wed, 23 Jul 2014 21:35:11 +0100 |
| Subject: staging: vt6655: Fix Warning on boot handle_irq_event_percpu. |
| |
| From: Malcolm Priestley <tvboxspy@gmail.com> |
| |
| commit 6cff1f6ad4c615319c1a146b2aa0af1043c5e9f5 upstream. |
| |
| WARNING: CPU: 0 PID: 929 at /home/apw/COD/linux/kernel/irq/handle.c:147 handle_irq_event_percpu+0x1d1/0x1e0() |
| irq 17 handler device_intr+0x0/0xa80 [vt6655_stage] enabled interrupts |
| |
| Using spin_lock_irqsave appears to fix this. |
| |
| Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| |
| --- |
| drivers/staging/vt6655/device_main.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/staging/vt6655/device_main.c |
| +++ b/drivers/staging/vt6655/device_main.c |
| @@ -2434,6 +2434,7 @@ static irqreturn_t device_intr(int irq |
| int handled = 0; |
| unsigned char byData = 0; |
| int ii = 0; |
| + unsigned long flags; |
| // unsigned char byRSSI; |
| |
| MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); |
| @@ -2459,7 +2460,8 @@ static irqreturn_t device_intr(int irq |
| |
| handled = 1; |
| MACvIntDisable(pDevice->PortOffset); |
| - spin_lock_irq(&pDevice->lock); |
| + |
| + spin_lock_irqsave(&pDevice->lock, flags); |
| |
| //Make sure current page is 0 |
| VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel); |
| @@ -2700,7 +2702,8 @@ static irqreturn_t device_intr(int irq |
| MACvSelectPage1(pDevice->PortOffset); |
| } |
| |
| - spin_unlock_irq(&pDevice->lock); |
| + spin_unlock_irqrestore(&pDevice->lock, flags); |
| + |
| MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE); |
| |
| return IRQ_RETVAL(handled); |