mem: add logic check for static analyzer
authorAnatoly Burakov <anatoly.burakov@intel.com>
Tue, 17 Jul 2018 15:41:45 +0000 (16:41 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 20 Jul 2018 09:32:03 +0000 (11:32 +0200)
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 issue: 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

index 79443c5..a59f229 100644 (file)
@@ -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);