char: xillybus: use devm_add_action_or_reset
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Sat, 30 Apr 2016 16:13:20 +0000 (17:13 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 30 Apr 2016 21:04:45 +0000 (14:04 -0700)
If devm_add_action() fails we are explicitly calling dma_unmap_single(),
pci_unmap_single() and kfree(). Lets use the helper
devm_add_action_or_reset() and return directly in case of error, as we
know that the cleanup function has been already called by the helper if
there was any error. At that same time remove the variable rc which
becomes unused now.

Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/xillybus/xillybus_of.c
drivers/char/xillybus/xillybus_pcie.c

index 781865084dc17444d74d39fb87d5aa5c9099988d..78a492f5acfb3ddc53e24dbf3d9a56a8ca4dbd01 100644 (file)
@@ -81,7 +81,6 @@ static int xilly_map_single_of(struct xilly_endpoint *ep,
 {
        dma_addr_t addr;
        struct xilly_mapping *this;
-       int rc;
 
        this = kzalloc(sizeof(*this), GFP_KERNEL);
        if (!this)
@@ -101,15 +100,7 @@ static int xilly_map_single_of(struct xilly_endpoint *ep,
 
        *ret_dma_handle = addr;
 
-       rc = devm_add_action(ep->dev, xilly_of_unmap, this);
-
-       if (rc) {
-               dma_unmap_single(ep->dev, addr, size, direction);
-               kfree(this);
-               return rc;
-       }
-
-       return 0;
+       return devm_add_action_or_reset(ep->dev, xilly_of_unmap, this);
 }
 
 static struct xilly_endpoint_hardware of_hw = {
index 9418300214e985472fbd76f1c3e5cd1d1c186a2a..dff2d153816471a6eef60b02dc4d1aa136314d7d 100644 (file)
@@ -98,7 +98,6 @@ static int xilly_map_single_pci(struct xilly_endpoint *ep,
        int pci_direction;
        dma_addr_t addr;
        struct xilly_mapping *this;
-       int rc;
 
        this = kzalloc(sizeof(*this), GFP_KERNEL);
        if (!this)
@@ -120,14 +119,7 @@ static int xilly_map_single_pci(struct xilly_endpoint *ep,
 
        *ret_dma_handle = addr;
 
-       rc = devm_add_action(ep->dev, xilly_pci_unmap, this);
-       if (rc) {
-               pci_unmap_single(ep->pdev, addr, size, pci_direction);
-               kfree(this);
-               return rc;
-       }
-
-       return 0;
+       return devm_add_action_or_reset(ep->dev, xilly_pci_unmap, this);
 }
 
 static struct xilly_endpoint_hardware pci_hw = {