Skip to contentSkip to conversation

Patch "libnvdimm, namespace: fix btt claim class crash" has been added to the 4.13-stable tree

PATCH [email protected] 1 participant 1 message Oct 2, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

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 33a56086712561b8b9cdc881e0317f4c36861f72 Mon 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.

Fixes 14e494542636 ("libnvdimm, btt: BTT updates for UEFI 2.7 format")
Cc Vishal Verma <[email protected]>
---
 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 device
 		struct 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