staging: dgap: use gotos for handling error in dgap_remap()
authorDaeseok Youn <daeseok.youn@gmail.com>
Fri, 26 Dec 2014 01:34:32 +0000 (10:34 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 Jan 2015 00:10:48 +0000 (16:10 -0800)
Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgap/dgap.c

index bdb5317e3d9d1b48a70ee594b79e1c8ef020e2f9..518ab567ca4e4a71a21c03b2b6386a2b19afe377 100644 (file)
@@ -1400,27 +1400,27 @@ static int dgap_remap(struct board_t *brd)
                return -ENOMEM;
 
        if (!request_mem_region(brd->membase + PCI_IO_OFFSET, 0x200000,
-                                       "dgap")) {
-               release_mem_region(brd->membase, 0x200000);
-               return -ENOMEM;
-       }
+                                       "dgap"))
+               goto err_req_mem;
 
        brd->re_map_membase = ioremap(brd->membase, 0x200000);
-       if (!brd->re_map_membase) {
-               release_mem_region(brd->membase, 0x200000);
-               release_mem_region(brd->membase + PCI_IO_OFFSET, 0x200000);
-               return -ENOMEM;
-       }
+       if (!brd->re_map_membase)
+               goto err_remap_mem;
 
        brd->re_map_port = ioremap((brd->membase + PCI_IO_OFFSET), 0x200000);
-       if (!brd->re_map_port) {
-               release_mem_region(brd->membase, 0x200000);
-               release_mem_region(brd->membase + PCI_IO_OFFSET, 0x200000);
-               iounmap(brd->re_map_membase);
-               return -ENOMEM;
-       }
+       if (!brd->re_map_port)
+               goto err_remap_port;
 
        return 0;
+
+err_remap_port:
+       iounmap(brd->re_map_membase);
+err_remap_mem:
+       release_mem_region(brd->membase + PCI_IO_OFFSET, 0x200000);
+err_req_mem:
+       release_mem_region(brd->membase, 0x200000);
+
+       return -ENOMEM;
 }
 
 static void dgap_unmap(struct board_t *brd)