libnvdimm: keep region data alive over namespace removal
authorDan Williams <dan.j.williams@intel.com>
Sat, 9 Jul 2016 23:46:29 +0000 (16:46 -0700)
committerDan Williams <dan.j.williams@intel.com>
Mon, 11 Jul 2016 23:13:41 +0000 (16:13 -0700)
nd_region device driver data will be used in the namespace i/o path.
Re-order nd_region_remove() to ensure this data stays live across
namespace device removal

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/region.c

index 333175d..8f24177 100644 (file)
@@ -82,6 +82,8 @@ static int nd_region_remove(struct device *dev)
 {
        struct nd_region *nd_region = to_nd_region(dev);
 
+       device_for_each_child(dev, NULL, child_unregister);
+
        /* flush attribute readers and disable */
        nvdimm_bus_lock(dev);
        nd_region->ns_seed = NULL;
@@ -91,7 +93,6 @@ static int nd_region_remove(struct device *dev)
        dev_set_drvdata(dev, NULL);
        nvdimm_bus_unlock(dev);
 
-       device_for_each_child(dev, NULL, child_unregister);
        return 0;
 }