libnvdimm, btt, convert nd_btt_probe() to devm
[cascardo/linux.git] / drivers / nvdimm / btt_devs.c
index cb47751..1886171 100644 (file)
@@ -273,10 +273,11 @@ static int __nd_btt_probe(struct nd_btt *nd_btt,
        return 0;
 }
 
-int nd_btt_probe(struct nd_namespace_common *ndns, void *drvdata)
+int nd_btt_probe(struct device *dev, struct nd_namespace_common *ndns,
+               void *drvdata)
 {
        int rc;
-       struct device *dev;
+       struct device *btt_dev;
        struct btt_sb *btt_sb;
        struct nd_region *nd_region = to_nd_region(ndns->dev.parent);
 
@@ -284,21 +285,20 @@ int nd_btt_probe(struct nd_namespace_common *ndns, void *drvdata)
                return -ENODEV;
 
        nvdimm_bus_lock(&ndns->dev);
-       dev = __nd_btt_create(nd_region, 0, NULL, ndns);
+       btt_dev = __nd_btt_create(nd_region, 0, NULL, ndns);
        nvdimm_bus_unlock(&ndns->dev);
-       if (!dev)
+       if (!btt_dev)
                return -ENOMEM;
-       dev_set_drvdata(dev, drvdata);
-       btt_sb = kzalloc(sizeof(*btt_sb), GFP_KERNEL);
-       rc = __nd_btt_probe(to_nd_btt(dev), ndns, btt_sb);
-       kfree(btt_sb);
-       dev_dbg(&ndns->dev, "%s: btt: %s\n", __func__,
-                       rc == 0 ? dev_name(dev) : "<none>");
+       dev_set_drvdata(btt_dev, drvdata);
+       btt_sb = devm_kzalloc(dev, sizeof(*btt_sb), GFP_KERNEL);
+       rc = __nd_btt_probe(to_nd_btt(btt_dev), ndns, btt_sb);
+       dev_dbg(dev, "%s: btt: %s\n", __func__,
+                       rc == 0 ? dev_name(btt_dev) : "<none>");
        if (rc < 0) {
-               struct nd_btt *nd_btt = to_nd_btt(dev);
+               struct nd_btt *nd_btt = to_nd_btt(btt_dev);
 
-               __nd_detach_ndns(dev, &nd_btt->ndns);
-               put_device(dev);
+               __nd_detach_ndns(btt_dev, &nd_btt->ndns);
+               put_device(btt_dev);
        }
 
        return rc;