Patch "libnvdimm, namespace: fix btt claim class crash" has been added to the 4.13-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
libnvdimm, namespace: fix btt claim class crash
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
libnvdimm-namespace-fix-btt-claim-class-crash.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
33a56086712561b8b9cdc881e0317f4c36861f72Mon Sep 17 00:00:00 2001
From: Dan Williams <[email protected]>
Date: Mon, 18 Sep 2017 14:48:58 -0700
Subject: libnvdimm, namespace: fix btt claim class crash
From: Dan Williams <[email protected]>
commit 33a56086712561b8b9cdc881e0317f4c36861f72 upstream.
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.
--- drivers/nvdimm/namespace_devs.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/nvdimm/namespace_devs.c +9 -0
@@ -1417,6 +1417,15 @@ static int btt_claim_class(struct devicestruct nvdimm_drvdata *ndd =to_ndd (nd_mapping);struct nd_namespace_index *nsindex; +/* +* If any of the DIMMs do not support labels the only +* possible BTT format is v1. +*/ +if (!ndd) { + loop_bitmask =0 ; +break ; + } + nsindex =to_namespace_index (ndd, ndd->ns_current);if (nsindex ==NULL ) loop_bitmask |=1 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/brd-fix-overflow-in-__brd_direct_access.patch queue-4.13/dax-remove-the-pmem_dax_ops-flush-abstraction.patch queue-4.13/libnvdimm-namespace-fix-btt-claim-class-crash.patch queue-4.13/genirq-fix-cpumask-check-in-__irq_startup_managed.patch