dz: don't panic() when request_irq() fails
Well, panic() is a little bit undue if request_irq() fails; there is probably no need to justify it any further. Handle the case gracefully, by unregistering the driver. Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> Cc: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
dbab81281d
Коммит
0ba137e23e
|
@ -794,18 +794,28 @@ static int __init dz_init(void)
|
|||
dz_reset(&dz_ports[0]);
|
||||
#endif
|
||||
|
||||
if (request_irq(dz_ports[0].port.irq, dz_interrupt,
|
||||
IRQF_DISABLED, "DZ", &dz_ports[0]))
|
||||
panic("Unable to register DZ interrupt");
|
||||
|
||||
ret = uart_register_driver(&dz_reg);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
goto out;
|
||||
|
||||
ret = request_irq(dz_ports[0].port.irq, dz_interrupt, IRQF_DISABLED,
|
||||
"DZ", &dz_ports[0]);
|
||||
if (ret != 0) {
|
||||
printk(KERN_ERR "dz: Cannot get IRQ %d!\n",
|
||||
dz_ports[0].port.irq);
|
||||
goto out_unregister;
|
||||
}
|
||||
|
||||
for (i = 0; i < DZ_NB_PORT; i++)
|
||||
uart_add_one_port(&dz_reg, &dz_ports[i].port);
|
||||
|
||||
return ret;
|
||||
|
||||
out_unregister:
|
||||
uart_unregister_driver(&dz_reg);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
module_init(dz_init);
|
||||
|
|
Загрузка…
Ссылка в новой задаче