diff options
Diffstat (limited to 'drivers/media/rc/sir_ir.c')
| -rw-r--r-- | drivers/media/rc/sir_ir.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/rc/sir_ir.c b/drivers/media/rc/sir_ir.c index e12ec50bf0bf..90a5f8fd5eea 100644 --- a/drivers/media/rc/sir_ir.c +++ b/drivers/media/rc/sir_ir.c @@ -183,9 +183,15 @@ static irqreturn_t sir_interrupt(int irq, void *dev_id)  	static unsigned long delt;  	unsigned long deltintr;  	unsigned long flags; +	int counter = 0;  	int iir, lsr;  	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 */  		case UART_IIR_MSI:  			(void)inb(io + UART_MSR);  |