media: staging: lirc_serial: Do not assume error codes returned by request_irq()

commit affc9a0d59 upstream.

lirc_serial_probe() must fail if request_irq() returns an error, even if
it isn't EBUSY or EINVAL,

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Ben Hutchings
2011-11-16 01:54:04 -03:00
committed by Greg Kroah-Hartman
parent c421942a2c
commit 35df833a65

View File

@@ -843,18 +843,15 @@ static int __devinit lirc_serial_probe(struct platform_device *dev)
result = request_irq(irq, irq_handler,
IRQF_DISABLED | (share_irq ? IRQF_SHARED : 0),
LIRC_DRIVER_NAME, (void *)&hardware);
switch (result) {
case -EBUSY:
printk(KERN_ERR LIRC_DRIVER_NAME ": IRQ %d busy\n", irq);
return -EBUSY;
case -EINVAL:
printk(KERN_ERR LIRC_DRIVER_NAME
": Bad irq number or handler\n");
return -EINVAL;
default:
break;
};
if (result < 0) {
if (result == -EBUSY)
printk(KERN_ERR LIRC_DRIVER_NAME ": IRQ %d busy\n",
irq);
else if (result == -EINVAL)
printk(KERN_ERR LIRC_DRIVER_NAME
": Bad irq number or handler\n");
return result;
}
/* Reserve io region. */
/*