[dpdk-dev] eal: fail eal when no hugepages were found

Message ID 20170124202202.31045-1-emmanuel.roullit@gmail.com (mailing list archive)
State Changes Requested, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel compilation success Compilation OK

Commit Message

Emmanuel Roullit Jan. 24, 2017, 8:22 p.m. UTC
  Found with clang static analysis:
lib/librte_eal/linuxapp/eal/eal_memory.c:1004:11:
warning: Call to 'malloc' has an allocation size of 0 bytes
tmp_hp = malloc(nr_hugepages * sizeof(struct hugepage_file));
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The --no-huge case, where nr_hugepages would be 0
as well, is handled earlier.

Fixes: 5e823a451261 ("ethdev: remove some VF functions")

Signed-off-by: Emmanuel Roullit <emmanuel.roullit@gmail.com>
---
 lib/librte_eal/linuxapp/eal/eal_memory.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Thomas Monjalon Jan. 29, 2017, 10:08 p.m. UTC | #1
2017-01-24 21:22, Emmanuel Roullit:
> Found with clang static analysis:
> lib/librte_eal/linuxapp/eal/eal_memory.c:1004:11:
> warning: Call to 'malloc' has an allocation size of 0 bytes
> tmp_hp = malloc(nr_hugepages * sizeof(struct hugepage_file));
>          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> The --no-huge case, where nr_hugepages would be 0
> as well, is handled earlier.
> 
> Fixes: 5e823a451261 ("ethdev: remove some VF functions")

This commit reference seems wrong. Please check
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
index a956bb226..0b0355898 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memory.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
@@ -995,6 +995,9 @@  rte_eal_hugepage_init(void)
 		nr_hugepages += internal_config.hugepage_info[i].num_pages[0];
 	}
 
+	if (nr_hugepages == 0)
+		goto fail;
+
 	/*
 	 * allocate a memory area for hugepage table.
 	 * this isn't shared memory yet. due to the fact that we need some