• Dan Williams's avatar
    libnvdimm, namespace: fix btt claim class crash · 33a56086
    Dan Williams authored
    Maurice reports:
    
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
        IP: holder_class_store+0x253/0x2b0 [libnvdimm]
    
    ...while trying to reconfigure an NVDIMM-N namespace into 'sector' /
    'btt' mode. The crash points to this line:
    
        (gdb) li *(holder_class_store+0x253)
        0x7773 is in holder_class_store (drivers/nvdimm/namespace_devs.c:1420).
        1415            for (i = 0; i < nd_region->ndr_mappings; i++) {
        1416                    struct nd_mapping *nd_mapping = &nd_region->mapping[i];
        1417                    struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
        1418                    struct nd_namespace_index *nsindex;
        1419
        1420                    nsindex = to_namespace_index(ndd, ndd->ns_current);
    
    ...where we are failing because ndd is NULL due to NVDIMM-N dimms not
    supporting labels.
    
    Long story short, default to the BTTv1 format in the label-less /
    NVDIMM-N case.
    
    Fixes: 14e49454 ("libnvdimm, btt: BTT updates for UEFI 2.7 format")
    Cc: <stable@vger.kernel.org>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Reported-by: default avatarMaurice A. Saldivar <maurice.a.saldivar@hpe.com>
    Tested-by: default avatarMaurice A. Saldivar <maurice.a.saldivar@hpe.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    33a56086
namespace_devs.c 64.8 KB