Thread (10 messages) 10 messages, 3 authors, 2016-07-10

Re: [PATCH] eal/linuxapp: fix resource leak

From: Sergio Gonzalez Monroy <hidden>
Date: 2016-05-12 07:55:55

Hi,

On 11/05/2016 17:01, Daniel Mrzyglod wrote:
Fix issue reported by Coverity.
Coverity ID 97920

munmap structure of hugepage

leaked_storage: Variable hugepage going out of scope leaks the storage
it points to.

The system resource will not be reclaimed and reused, reducing the future
availability of the resource.
I'm not really fond of this commit messages, but if no one minds them, 
so be it.
quoted hunk ↗ jump to hunk
In rte_eal_hugepage_init: Leak of memory or pointers to system resources

Fixes: b6a468ad41d5 ("memory: add --socket-mem option")

Signed-off-by: Daniel Mrzyglod <redacted>
---
  lib/librte_eal/linuxapp/eal/eal_memory.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
index 5b9132c..cd40cc9 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memory.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
@@ -1051,7 +1051,7 @@ int
  rte_eal_hugepage_init(void)
  {
  	struct rte_mem_config *mcfg;
-	struct hugepage_file *hugepage, *tmp_hp = NULL;
+	struct hugepage_file *hugepage = NULL, *tmp_hp = NULL;
  	struct hugepage_info used_hp[MAX_HUGEPAGE_SIZES];
  
  	uint64_t memory[RTE_MAX_NUMA_NODES];
@@ -1374,6 +1374,8 @@ rte_eal_hugepage_init(void)
  
  fail:
  	free(tmp_hp);
+	if (hugepage != NULL)
+		munmap(hugepage, nr_hugefiles * sizeof(struct hugepage_file));
  	return -1;
  }
  
You missed the last conditional if(...0 of the function where it returns 
directly with error value.

Looking at the code a bit, we never check for anything other than < 0 
return value, so I'd just do a 'goto fail' instead.

Sergio
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help