If devm_add_action() fails we are explicitly calling the cleanup to free
the resources allocated. 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.

Signed-off-by: Sudip Mukherjee <[email protected]>
---

There is no maintainer mentioned for this driver, so not sure who should
this patch go through.

 drivers/dax/dax.c  |  8 ++------
 drivers/dax/pmem.c | 14 ++++++--------
 2 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/drivers/dax/dax.c b/drivers/dax/dax.c
index b891a12..9eacd4d 100644
--- a/drivers/dax/dax.c
+++ b/drivers/dax/dax.c
@@ -211,13 +211,9 @@ int devm_create_dax_dev(struct dax_region *dax_region, 
struct resource *res,
        }
        dax_dev->dev = dev;
 
-       rc = devm_add_action(dax_region->dev, unregister_dax_dev, dev);
-       if (rc) {
-               unregister_dax_dev(dev);
-               return rc;
-       }
+       rc = devm_add_action_or_reset(dax_region->dev, unregister_dax_dev, dev);
 
-       return 0;
+       return rc;
 
  err_create:
        ida_simple_remove(&dax_minor_ida, minor);
diff --git a/drivers/dax/pmem.c b/drivers/dax/pmem.c
index 55d510e..f5bbbca 100644
--- a/drivers/dax/pmem.c
+++ b/drivers/dax/pmem.c
@@ -102,21 +102,19 @@ static int dax_pmem_probe(struct device *dev)
        if (rc)
                return rc;
 
-       rc = devm_add_action(dev, dax_pmem_percpu_exit, &dax_pmem->ref);
-       if (rc) {
-               dax_pmem_percpu_exit(&dax_pmem->ref);
+       rc = devm_add_action_or_reset(dev, dax_pmem_percpu_exit,
+                                     &dax_pmem->ref);
+       if (rc)
                return rc;
-       }
 
        addr = devm_memremap_pages(dev, &res, &dax_pmem->ref, altmap);
        if (IS_ERR(addr))
                return PTR_ERR(addr);
 
-       rc = devm_add_action(dev, dax_pmem_percpu_kill, &dax_pmem->ref);
-       if (rc) {
-               dax_pmem_percpu_kill(&dax_pmem->ref);
+       rc = devm_add_action_or_reset(dev, dax_pmem_percpu_kill,
+                                     &dax_pmem->ref);
+       if (rc)
                return rc;
-       }
 
        nd_region = to_nd_region(dev->parent);
        dax_region = alloc_dax_region(dev, nd_region->id, &res,
-- 
1.9.1

Reply via email to