• Dan Williams's avatar
    libnvdimm/region: Register badblocks before namespaces · 700cd033
    Dan Williams authored
    Namespace activation expects to be able to reference region badblocks.
    The following warning sometimes triggers when asynchronous namespace
    activation races in front of the completion of namespace probing. Move
    all possible namespace probing after region badblocks initialization.
    Otherwise, lockdep sometimes catches the uninitialized state of the
    badblocks seqlock with stack trace signatures like:
        INFO: trying to register non-static key.
        pmem2: detected capacity change from 0 to 136365211648
        the code is fine but needs lockdep annotation.
        turning off the locking correctness validator.
        CPU: 9 PID: 358 Comm: kworker/u80:5 Tainted: G           OE     5.2.0-rc4+ #3382
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.0.0 02/06/2015
        Workqueue: events_unbound async_run_entry_fn
        Call Trace:
        pmem1.12: detected capacity change from 0 to 8589934592
         ? check_object+0x140/0x270
         ? __mutex_lock+0x39d/0x910
         ? nd_pfn_validate+0x28f/0x440 [libnvdimm]
         ? nd_pfn_validate+0x28f/0x440 [libnvdimm]
         nd_pfn_validate+0x28f/0x440 [libnvdimm]
         ? lockdep_hardirqs_on+0xf0/0x180
         nd_dax_probe+0x9a/0x120 [libnvdimm]
         nd_pmem_probe+0x6d/0x180 [nd_pmem]
         nvdimm_bus_probe+0x90/0x2c0 [libnvdimm]
    Fixes: 48af2f7e
     ("libnvdimm, pfn: during init, clear errors...")
    Cc: <stable@vger.kernel.org>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Reviewed-by: default avatarVishal Verma <vishal.l.verma@intel.com>
    Link: https://lore.kernel.org/r/156341208365.292348.1547528796026249120.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>