[media] sir_ir: infinite loop in interrupt handler
Since this driver does no detection of hardware, it might be used with a non-sir port. Escape out if we are spinning. Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
dd8245f445
commit
592ddc9f7d
|
@ -183,9 +183,15 @@ static irqreturn_t sir_interrupt(int irq, void *dev_id)
|
||||||
static unsigned long delt;
|
static unsigned long delt;
|
||||||
unsigned long deltintr;
|
unsigned long deltintr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
int counter = 0;
|
||||||
int iir, lsr;
|
int iir, lsr;
|
||||||
|
|
||||||
while ((iir = inb(io + UART_IIR) & UART_IIR_ID)) {
|
while ((iir = inb(io + UART_IIR) & UART_IIR_ID)) {
|
||||||
|
if (++counter > 256) {
|
||||||
|
dev_err(&sir_ir_dev->dev, "Trapped in interrupt");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (iir & UART_IIR_ID) { /* FIXME toto treba preriedit */
|
switch (iir & UART_IIR_ID) { /* FIXME toto treba preriedit */
|
||||||
case UART_IIR_MSI:
|
case UART_IIR_MSI:
|
||||||
(void)inb(io + UART_MSR);
|
(void)inb(io + UART_MSR);
|
||||||
|
|
Loading…
Reference in New Issue