libnvdimm, dax: fix alignment validation
authorDan Williams <dan.j.williams@intel.com>
Sat, 21 May 2016 18:01:41 +0000 (11:01 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sat, 21 May 2016 18:01:41 +0000 (11:01 -0700)
commit5e24c9fd36285535c704e84748d6c890be870fb6
tree72482127094e47042d46d9e8892466852f0e5347
parentc5ed9268643c7c4c9f2aaa0fd4c936095e6480ef
libnvdimm, dax: fix alignment validation

Testing the dax-device autodetect support revealed a probe failure with
the following result:

    dax0.1: bad offset: 0x8200000 dax disabled

The original pfn-device implementation inferred the alignment from
ilog2(offset), now that the alignment is explicit the is_power_of_2()
needs replacing with a real sanity check against the recorded alignment.
Otherwise the alignment check is useless in the implicit case and only
the minimum size of the offset matters.

This self-consistency check is further validated by the probe path that
will re-check that the offset is large enough to contain all the
metadata required to enable the device.

Cc: <stable@vger.kernel.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/pfn_devs.c