Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2df69703 authored by Leonardo Potenza's avatar Leonardo Potenza Committed by Dominik Brodowski
Browse files

pcmcia: i82365.c: check request_irq return value



Add a check for the request_irq() return value.

Signed-off-by: default avatarLeonardo Potenza <lpotenza@inwind.it>
Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
parent b3363997
Loading
Loading
Loading
Loading
+27 −12
Original line number Diff line number Diff line
@@ -1263,7 +1263,7 @@ static int __init init_i82365(void)

    ret = driver_register(&i82365_driver);
    if (ret)
	return ret;
	goto err_out;

    i82365_device = platform_device_alloc("i82365", 0);
    if (i82365_device) {
@@ -1273,10 +1273,8 @@ static int __init init_i82365(void)
    } else
	    ret = -ENOMEM;

    if (ret) {
	driver_unregister(&i82365_driver);
	return ret;
    }
    if (ret)
	goto err_driver_unregister;

    printk(KERN_INFO "Intel ISA PCIC probe: ");
    sockets = 0;
@@ -1285,15 +1283,16 @@ static int __init init_i82365(void)

    if (sockets == 0) {
	printk("not found.\n");
	platform_device_unregister(i82365_device);
	release_region(i365_base, 2);
	driver_unregister(&i82365_driver);
	return -ENODEV;
	ret = -ENODEV;
	goto err_dev_unregister;
    }

    /* Set up interrupt handler(s) */
    if (grab_irq != 0)
	request_irq(cs_irq, pcic_interrupt, 0, "i82365", pcic_interrupt);
	ret = request_irq(cs_irq, pcic_interrupt, 0, "i82365", pcic_interrupt);

    if (ret)
	goto err_socket_release;

    /* register sockets with the pcmcia core */
    for (i = 0; i < sockets; i++) {
@@ -1324,7 +1323,23 @@ static int __init init_i82365(void)
    }
    
    return 0;
    
err_socket_release:
    for (i = 0; i < sockets; i++) {
	/* Turn off all interrupt sources! */
	i365_set(i, I365_CSCINT, 0);
	release_region(socket[i].ioaddr, 2);
    }
err_dev_unregister:
    platform_device_unregister(i82365_device);
    release_region(i365_base, 2);
#ifdef CONFIG_PNP
    if (i82365_pnpdev)
	pnp_disable_dev(i82365_pnpdev);
#endif
err_driver_unregister:
    driver_unregister(&i82365_driver);
err_out:
    return ret;
} /* init_i82365 */

static void __exit exit_i82365(void)