[media] sir_ir: use dev managed resources
authorSean Young <sean@mess.org>
Wed, 17 May 2017 17:32:51 +0000 (14:32 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Jun 2017 12:15:00 +0000 (09:15 -0300)
Several error paths do not free up resources. This simplifies the code
and fixes this.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/rc/sir_ir.c

index c27d6b406d7ceba0e3a270172d06970998b5a2c2..1ee41adb2ab120b323639ec5f3fd71d21a985309 100644 (file)
@@ -334,14 +334,13 @@ static int init_port(void)
        setup_timer(&timerlist, sir_timeout, 0);
 
        /* get I/O port access and IRQ line */
-       if (!request_region(io, 8, KBUILD_MODNAME)) {
+       if (!devm_request_region(&sir_ir_dev->dev, io, 8, KBUILD_MODNAME)) {
                pr_err("i/o port 0x%.4x already in use.\n", io);
                return -EBUSY;
        }
-       retval = request_irq(irq, sir_interrupt, 0,
-                            KBUILD_MODNAME, NULL);
+       retval = devm_request_irq(&sir_ir_dev->dev, irq, sir_interrupt, 0,
+                                 KBUILD_MODNAME, NULL);
        if (retval < 0) {
-               release_region(io, 8);
                pr_err("IRQ %d already in use.\n", irq);
                return retval;
        }
@@ -352,9 +351,7 @@ static int init_port(void)
 
 static void drop_port(void)
 {
-       free_irq(irq, NULL);
        del_timer_sync(&timerlist);
-       release_region(io, 8);
 }
 
 static int init_sir_ir(void)