Input: mice - handle errors when registering input devices
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
@@ -108,6 +108,7 @@ static int pc110pad_open(struct input_dev *dev)
|
||||
static int __init pc110pad_init(void)
|
||||
{
|
||||
struct pci_dev *dev;
|
||||
int err;
|
||||
|
||||
dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL);
|
||||
if (dev) {
|
||||
@@ -124,16 +125,16 @@ static int __init pc110pad_init(void)
|
||||
outb(PC110PAD_OFF, pc110pad_io + 2);
|
||||
|
||||
if (request_irq(pc110pad_irq, pc110pad_interrupt, 0, "pc110pad", NULL)) {
|
||||
release_region(pc110pad_io, 4);
|
||||
printk(KERN_ERR "pc110pad: Unable to get irq %d.\n", pc110pad_irq);
|
||||
return -EBUSY;
|
||||
err = -EBUSY;
|
||||
goto err_release_region;
|
||||
}
|
||||
|
||||
if (!(pc110pad_dev = input_allocate_device())) {
|
||||
free_irq(pc110pad_irq, NULL);
|
||||
release_region(pc110pad_io, 4);
|
||||
pc110pad_dev = input_allocate_device();
|
||||
if (!pc110pad_dev) {
|
||||
printk(KERN_ERR "pc110pad: Not enough memory.\n");
|
||||
return -ENOMEM;
|
||||
err = -ENOMEM;
|
||||
goto err_free_irq;
|
||||
}
|
||||
|
||||
pc110pad_dev->name = "IBM PC110 TouchPad";
|
||||
@@ -153,9 +154,20 @@ static int __init pc110pad_init(void)
|
||||
pc110pad_dev->open = pc110pad_open;
|
||||
pc110pad_dev->close = pc110pad_close;
|
||||
|
||||
input_register_device(pc110pad_dev);
|
||||
err = input_register_device(pc110pad_dev);
|
||||
if (err)
|
||||
goto err_free_dev;
|
||||
|
||||
return 0;
|
||||
|
||||
err_free_dev:
|
||||
input_free_device(pc110pad_dev);
|
||||
err_free_irq:
|
||||
free_irq(pc110pad_irq, NULL);
|
||||
err_release_region:
|
||||
release_region(pc110pad_io, 4);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static void __exit pc110pad_exit(void)
|
||||
|
Reference in New Issue
Block a user