Dan Williams 4f8672201b libnvdimm, namespace: use a safe lookup for dimm device name
The following NULL dereference results from incorrectly assuming that
ndd is valid in this print:

  struct nvdimm_drvdata *ndd = to_ndd(&nd_region->mapping[i]);

  /*
   * Give up if we don't find an instance of a uuid at each
   * position (from 0 to nd_region->ndr_mappings - 1), or if we
   * find a dimm with two instances of the same uuid.
   */
  dev_err(&nd_region->dev, "%s missing label for %pUb\n",
                  dev_name(ndd->dev), nd_label->uuid);

 BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
 IP: nd_region_register_namespaces+0xd67/0x13c0 [libnvdimm]
 PGD 0 P4D 0
 Oops: 0000 [#1] SMP PTI
 CPU: 43 PID: 673 Comm: kworker/u609:10 Not tainted 4.16.0-rc4+ #1
 [..]
 RIP: 0010:nd_region_register_namespaces+0xd67/0x13c0 [libnvdimm]
 [..]
 Call Trace:
  ? devres_add+0x2f/0x40
  ? devm_kmalloc+0x52/0x60
  ? nd_region_activate+0x9c/0x320 [libnvdimm]
  nd_region_probe+0x94/0x260 [libnvdimm]
  ? kernfs_add_one+0xe4/0x130
  nvdimm_bus_probe+0x63/0x100 [libnvdimm]

Switch to using the nvdimm device directly.

Fixes: 0e3b0d123c8f ("libnvdimm, namespace: allow multiple pmem...")
Cc: <stable@vger.kernel.org>
Reported-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2018-04-06 22:59:39 -07:00
..
2018-02-06 09:59:40 -08:00
2018-02-15 14:50:32 -08:00
2018-03-01 08:41:27 -07:00
2018-02-07 11:22:44 -08:00
2018-03-02 10:44:44 +01:00
2018-02-02 10:01:04 -08:00
2018-02-26 09:28:35 -08:00
2018-03-15 07:18:47 -07:00
2018-03-02 09:35:36 -08:00
2018-02-24 16:05:50 -08:00
2018-02-01 10:31:17 -08:00
2018-03-02 10:19:57 -08:00
2018-03-02 17:44:39 -08:00
2018-02-20 11:34:54 +00:00
2018-02-01 09:40:49 -08:00
2018-01-30 12:25:59 +00:00
2018-02-05 10:07:40 -08:00
2018-02-15 14:29:27 -08:00
2018-02-06 09:59:40 -08:00
2018-02-23 14:09:43 -08:00
2018-02-28 16:11:04 -08:00
2018-01-22 16:45:26 +01:00
2018-02-22 12:05:43 -08:00
2018-02-22 12:13:01 -08:00
2018-03-02 10:19:57 -08:00
2018-02-01 10:31:17 -08:00
2018-02-06 09:59:40 -08:00