aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dax/pmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/dax/pmem.c')
-rw-r--r--drivers/dax/pmem.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/dax/pmem.c b/drivers/dax/pmem.c
index 55d510e36cd1..dfb168568af1 100644
--- a/drivers/dax/pmem.c
+++ b/drivers/dax/pmem.c
@@ -102,21 +102,19 @@ static int dax_pmem_probe(struct device *dev)
102 if (rc) 102 if (rc)
103 return rc; 103 return rc;
104 104
105 rc = devm_add_action(dev, dax_pmem_percpu_exit, &dax_pmem->ref); 105 rc = devm_add_action_or_reset(dev, dax_pmem_percpu_exit,
106 if (rc) { 106 &dax_pmem->ref);
107 dax_pmem_percpu_exit(&dax_pmem->ref); 107 if (rc)
108 return rc; 108 return rc;
109 }
110 109
111 addr = devm_memremap_pages(dev, &res, &dax_pmem->ref, altmap); 110 addr = devm_memremap_pages(dev, &res, &dax_pmem->ref, altmap);
112 if (IS_ERR(addr)) 111 if (IS_ERR(addr))
113 return PTR_ERR(addr); 112 return PTR_ERR(addr);
114 113
115 rc = devm_add_action(dev, dax_pmem_percpu_kill, &dax_pmem->ref); 114 rc = devm_add_action_or_reset(dev, dax_pmem_percpu_kill,
116 if (rc) { 115 &dax_pmem->ref);
117 dax_pmem_percpu_kill(&dax_pmem->ref); 116 if (rc)
118 return rc; 117 return rc;
119 }
120 118
121 nd_region = to_nd_region(dev->parent); 119 nd_region = to_nd_region(dev->parent);
122 dax_region = alloc_dax_region(dev, nd_region->id, &res, 120 dax_region = alloc_dax_region(dev, nd_region->id, &res,