Patch "libnvdimm, namespace: fix pmem namespace leak, delete when size set to zero" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
libnvdimm, namespace: fix pmem namespace leak, delete when size set to zero
to the 4.9-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-pmem-namespace-leak-delete-when-size-set-to-zero.patch
and it can be found in the queue-4.9 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
1f19b983a8877f81763fab3e693c6befe212736dMon Sep 17 00:00:00 2001
From: Dan Williams <[email protected]>
Date: Mon, 9 Jan 2017 17:30:49 -0800
Subject: libnvdimm, namespace: fix pmem namespace leak, delete when size set to zero
From: Dan Williams <[email protected]>
commit 1f19b983a8877f81763fab3e693c6befe212736d upstream.
Commit 98a29c39dc68 ("libnvdimm, namespace: allow creation of multiple pmem-namespaces per region") added support for establishing additional pmem namespace beyond the seed device, similar to blk namespaces. However, it neglected to delete the namespace when the size is set to zero.
--- drivers/nvdimm/namespace_devs.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-)
drivers/nvdimm/namespace_devs.c +10 -13
@@ -957,6 +957,7 @@ static ssize_t __size_store(struct devic {resource_size_t allocated =0 , available =0 ;struct nd_region *nd_region =to_nd_region (dev->parent); +struct nd_namespace_common *ndns =to_ndns (dev);struct nd_mapping *nd_mapping;struct nvdimm_drvdata *ndd;struct nd_label_id label_id;
@@ -964,7 +965,7 @@ static ssize_t __size_store(struct devicu8 *uuid =NULL ;int rc, i; -if (dev->driver ||to_ndns (dev)->claim) +if (dev->driver || ndns->claim)return -EBUSY ;if (is_namespace_pmem (dev)) {
@@ -1034,20 +1035,16 @@ static ssize_t __size_store(struct devicnd_namespace_pmem_set_resource (nd_region, nspm, val * nd_region->ndr_mappings); - }else if (is_namespace_blk (dev)) { -struct nd_namespace_blk *nsblk =to_nd_namespace_blk (dev); - -/* -* Try to delete the namespace if we deleted all of its -* allocation, this is not the seed device for the -* region, and it is not actively claimed by a btt -* instance. -*/ -if (val ==0 && nd_region->ns_seed != dev - && !nsblk->common.claim) -nd_device_unregister (dev,ND_ASYNC ); } +/* +* Try to delete the namespace if we deleted all of its +* allocation, this is not the seed device for the region, and +* it is not actively claimed by a btt instance. +*/ +if (val ==0 && nd_region->ns_seed != dev && !ndns->claim) +nd_device_unregister (dev,ND_ASYNC ); +return rc; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/libnvdimm-namespace-fix-pmem-namespace-leak-delete-when-size-set-to-zero.patch