All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] mem: zero out memory on free
@ 2016-07-05 11:01 Sergio Gonzalez Monroy
  2016-07-05 11:01 ` [PATCH 2/2] malloc: no need to zero out memory on zmalloc Sergio Gonzalez Monroy
  0 siblings, 1 reply; 3+ messages in thread
From: Sergio Gonzalez Monroy @ 2016-07-05 11:01 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson

Since [1] memzones are not guaranteed to be zeroed out.
This could potentially cause issues as applications might have been
relying on the allocated memory being zeroed out.

On init all allocated memory is zeroed by the kernel, so by zeroing out
memory on free, all available dpdk memory is always zeroed.

[1] fafcc11985a2 ("mem: rework memzone to be allocated by malloc")

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 lib/librte_eal/common/malloc_elem.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c
index 27e9925..42568e1 100644
--- a/lib/librte_eal/common/malloc_elem.c
+++ b/lib/librte_eal/common/malloc_elem.c
@@ -275,11 +275,14 @@ malloc_elem_free(struct malloc_elem *elem)
 		return -1;
 
 	rte_spinlock_lock(&(elem->heap->lock));
+	size_t sz = elem->size - sizeof(*elem);
+	uint8_t *ptr = (uint8_t *)&elem[1];
 	struct malloc_elem *next = RTE_PTR_ADD(elem, elem->size);
 	if (next->state == ELEM_FREE){
 		/* remove from free list, join to this one */
 		elem_free_list_remove(next);
 		join_elem(elem, next);
+		sz += sizeof(*elem);
 	}
 
 	/* check if previous element is free, if so join with it and return,
@@ -288,15 +291,17 @@ malloc_elem_free(struct malloc_elem *elem)
 	if (elem->prev != NULL && elem->prev->state == ELEM_FREE) {
 		elem_free_list_remove(elem->prev);
 		join_elem(elem->prev, elem);
-		malloc_elem_free_list_insert(elem->prev);
-	}
-	/* otherwise add ourselves to the free list */
-	else {
-		malloc_elem_free_list_insert(elem);
-		elem->pad = 0;
+		sz += sizeof(*elem);
+		ptr -= sizeof(*elem);
+		elem = elem->prev;
 	}
+	malloc_elem_free_list_insert(elem);
+
 	/* decrease heap's count of allocated elements */
 	elem->heap->alloc_count--;
+
+	memset(ptr, 0, sz);
+
 	rte_spinlock_unlock(&(elem->heap->lock));
 
 	return 0;
-- 
2.4.11

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] malloc: no need to zero out memory on zmalloc
  2016-07-05 11:01 [PATCH 1/2] mem: zero out memory on free Sergio Gonzalez Monroy
@ 2016-07-05 11:01 ` Sergio Gonzalez Monroy
  2016-07-10 13:43   ` Thomas Monjalon
  0 siblings, 1 reply; 3+ messages in thread
From: Sergio Gonzalez Monroy @ 2016-07-05 11:01 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson

Zeroing out memory on rte_zmalloc_socket is not required anymore since all
allocated memory is already zeroed.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
 lib/librte_eal/common/rte_malloc.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c
index 47deb00..f4a8835 100644
--- a/lib/librte_eal/common/rte_malloc.c
+++ b/lib/librte_eal/common/rte_malloc.c
@@ -123,11 +123,7 @@ rte_malloc(const char *type, size_t size, unsigned align)
 void *
 rte_zmalloc_socket(const char *type, size_t size, unsigned align, int socket)
 {
-	void *ptr = rte_malloc_socket(type, size, align, socket);
-
-	if (ptr != NULL)
-		memset(ptr, 0, size);
-	return ptr;
+	return rte_malloc_socket(type, size, align, socket);
 }
 
 /*
-- 
2.4.11

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 2/2] malloc: no need to zero out memory on zmalloc
  2016-07-05 11:01 ` [PATCH 2/2] malloc: no need to zero out memory on zmalloc Sergio Gonzalez Monroy
@ 2016-07-10 13:43   ` Thomas Monjalon
  0 siblings, 0 replies; 3+ messages in thread
From: Thomas Monjalon @ 2016-07-10 13:43 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy; +Cc: dev, bruce.richardson

2016-07-05 12:01, Sergio Gonzalez Monroy:
> Zeroing out memory on rte_zmalloc_socket is not required anymore since all
> allocated memory is already zeroed.
> 
> Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>

Series applied, thanks

This patch will need special attention when validating this release.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-07-10 13:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-05 11:01 [PATCH 1/2] mem: zero out memory on free Sergio Gonzalez Monroy
2016-07-05 11:01 ` [PATCH 2/2] malloc: no need to zero out memory on zmalloc Sergio Gonzalez Monroy
2016-07-10 13:43   ` Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.