mem: fix static analysis warning

Message ID 8308ba8ca44234ec58b36c422ff3bb85117ecd08.1531841506.git.anatoly.burakov@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series mem: fix static analysis warning |

Checks

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

Commit Message

Burakov, Anatoly July 17, 2018, 3:41 p.m. UTC
  Technically, single file segments codepath will never get
triggered when using in-memory mode, because EAL prohibits
mixing these two options at initialization time. However,
code analyzers do not know that, and some will complain
about either using uninitialized variables, or trying to
do operations on an already closed descriptor.

Fix this by assuring the compiler or code analyzer that
in-memory mode code never gets triggered when using
single-file segments mode.

Coverity ID: 302847
Fixes: 72b49ff623c4 ("mem: support --in-memory mode")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/linuxapp/eal/eal_memalloc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Thomas Monjalon July 20, 2018, 9:30 a.m. UTC | #1
17/07/2018 17:41, Anatoly Burakov:
> Technically, single file segments codepath will never get
> triggered when using in-memory mode, because EAL prohibits
> mixing these two options at initialization time. However,
> code analyzers do not know that, and some will complain
> about either using uninitialized variables, or trying to
> do operations on an already closed descriptor.
> 
> Fix this by assuring the compiler or code analyzer that
> in-memory mode code never gets triggered when using
> single-file segments mode.
> 
> Coverity ID: 302847
> Fixes: 72b49ff623c4 ("mem: support --in-memory mode")
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
index 79443c56a..a59f229cd 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
@@ -481,7 +481,9 @@  alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,
 	void *new_addr;
 
 	alloc_sz = hi->hugepage_sz;
-	if (internal_config.in_memory && anonymous_hugepages_supported) {
+	if (!internal_config.single_file_segments &&
+			internal_config.in_memory &&
+			anonymous_hugepages_supported) {
 		int log2, flags;
 
 		log2 = rte_log2_u32(alloc_sz);