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

Commit d1c8e0c5 authored by Sajjan, Vikas C's avatar Sajjan, Vikas C Committed by Dan Williams
Browse files

dax: use devm_add_action_or_reset()



If devm_add_action() fails, we are explicitly calling the cleanup to free
the resources allocated. Use the helper devm_add_action_or_reset()
and return directly in case of error, since the cleanup function
has been already called by the helper if there was any error.

Reported-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: default avatarVikas C Sajjan <vikas.cha.sajjan@hpe.com>
Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent d932dd2c
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -211,11 +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);
	rc = devm_add_action_or_reset(dax_region->dev, unregister_dax_dev, dev);
	if (rc)
		return rc;
	}

	return 0;

+6 −8
Original line number Diff line number Diff line
@@ -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,