The reference counting of dax_region objects is needlessly complicated,
has lead to confusion [1], and has hidden a bug [2]. While testing the
cleanup for those issues, a CONFIG_DEBUG_KOBJECT_RELEASE test run
uncovered a use-after-free in dax_mapping_release(). Clean all of that
up.
Thanks to Yongqiang, Paul, and Ira for their analysis.
Additionally, clean up a redundant variable in fsdax, and fix memory
hotplug registration in the kmem driver.
[1]: http://lore.kernel.org/r/
20221203095858.612027-1-liuyongqiang13@huawei.com
[2]: http://lore.kernel.org/r/
3cf0890b-4eb0-e70e-cd9c-
2ecc3d496263@hpe.com