diff mbox series

libnvdimm, namespace: check nsblk->uuid immediately after its allocation

Message ID 20190116065144.3499-1-richardw.yang@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series libnvdimm, namespace: check nsblk->uuid immediately after its allocation | expand

Commit Message

Wei Yang Jan. 16, 2019, 6:51 a.m. UTC
When creating nd_namespace_blk, its uuid is copied from nd_label->uuid.
In case the memory allocation fails, it goes to the error branch.

This check is better to be done immediately after memory allocation,
while current implementation does this after assigning claim_class.

This patch moves the check immediately after uuid allocation.

Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
---
 drivers/nvdimm/namespace_devs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Wei Yang June 4, 2019, 3:10 a.m. UTC | #1
Hi, Dan

Do you have some time on this?

On Wed, Jan 16, 2019 at 02:51:44PM +0800, Wei Yang wrote:
>When creating nd_namespace_blk, its uuid is copied from nd_label->uuid.
>In case the memory allocation fails, it goes to the error branch.
>
>This check is better to be done immediately after memory allocation,
>while current implementation does this after assigning claim_class.
>
>This patch moves the check immediately after uuid allocation.
>
>Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
>---
> drivers/nvdimm/namespace_devs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
>index 681af3a8fd62..9471b9ca04f5 100644
>--- a/drivers/nvdimm/namespace_devs.c
>+++ b/drivers/nvdimm/namespace_devs.c
>@@ -2240,11 +2240,11 @@ static struct device *create_namespace_blk(struct nd_region *nd_region,
> 	nsblk->lbasize = __le64_to_cpu(nd_label->lbasize);
> 	nsblk->uuid = kmemdup(nd_label->uuid, NSLABEL_UUID_LEN,
> 			GFP_KERNEL);
>+	if (!nsblk->uuid)
>+		goto blk_err;
> 	if (namespace_label_has(ndd, abstraction_guid))
> 		nsblk->common.claim_class
> 			= to_nvdimm_cclass(&nd_label->abstraction_guid);
>-	if (!nsblk->uuid)
>-		goto blk_err;
> 	memcpy(name, nd_label->name, NSLABEL_NAME_LEN);
> 	if (name[0])
> 		nsblk->alt_name = kmemdup(name, NSLABEL_NAME_LEN,
>-- 
>2.19.1
Dan Williams June 25, 2019, 10:06 p.m. UTC | #2
On Mon, Jun 3, 2019 at 8:11 PM Wei Yang <richardw.yang@linux.intel.com> wrote:
>
> Hi, Dan
>
> Do you have some time on this?
>
> On Wed, Jan 16, 2019 at 02:51:44PM +0800, Wei Yang wrote:
> >When creating nd_namespace_blk, its uuid is copied from nd_label->uuid.
> >In case the memory allocation fails, it goes to the error branch.
> >
> >This check is better to be done immediately after memory allocation,
> >while current implementation does this after assigning claim_class.
> >
> >This patch moves the check immediately after uuid allocation.

This looks ok, but the patch has no significant impact. I'm not
particularly motivated to carry it forward.
Wei Yang June 26, 2019, 12:26 a.m. UTC | #3
On Tue, Jun 25, 2019 at 03:06:42PM -0700, Dan Williams wrote:
>On Mon, Jun 3, 2019 at 8:11 PM Wei Yang <richardw.yang@linux.intel.com> wrote:
>>
>> Hi, Dan
>>
>> Do you have some time on this?
>>
>> On Wed, Jan 16, 2019 at 02:51:44PM +0800, Wei Yang wrote:
>> >When creating nd_namespace_blk, its uuid is copied from nd_label->uuid.
>> >In case the memory allocation fails, it goes to the error branch.
>> >
>> >This check is better to be done immediately after memory allocation,
>> >while current implementation does this after assigning claim_class.
>> >
>> >This patch moves the check immediately after uuid allocation.
>
>This looks ok, but the patch has no significant impact. I'm not
>particularly motivated to carry it forward.

Got it. Thanks
diff mbox series

Patch

diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index 681af3a8fd62..9471b9ca04f5 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -2240,11 +2240,11 @@  static struct device *create_namespace_blk(struct nd_region *nd_region,
 	nsblk->lbasize = __le64_to_cpu(nd_label->lbasize);
 	nsblk->uuid = kmemdup(nd_label->uuid, NSLABEL_UUID_LEN,
 			GFP_KERNEL);
+	if (!nsblk->uuid)
+		goto blk_err;
 	if (namespace_label_has(ndd, abstraction_guid))
 		nsblk->common.claim_class
 			= to_nvdimm_cclass(&nd_label->abstraction_guid);
-	if (!nsblk->uuid)
-		goto blk_err;
 	memcpy(name, nd_label->name, NSLABEL_NAME_LEN);
 	if (name[0])
 		nsblk->alt_name = kmemdup(name, NSLABEL_NAME_LEN,