]> git.droids-corp.org - dpdk.git/commitdiff
mem: fix page fault trigger
authorAnatoly Burakov <anatoly.burakov@intel.com>
Fri, 27 Apr 2018 16:38:21 +0000 (17:38 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 27 Apr 2018 21:42:40 +0000 (23:42 +0200)
Coverity reports these lines as having no effect. Technically, we do
want for those lines to have no effect, however they would've likely
been optimized out. Add volatile qualifiers to ensure the code has
effects.

Coverity issue: 272608
Fixes: 582bed1e1d1d ("mem: support mapping hugepages at runtime")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/linuxapp/eal/eal_memalloc.c

index 559e3f29c0c61a15a41c82dedd69ccf4e0f6b5fe..f94f3885d0566a687eb18b624092bddd83d22147 100644 (file)
@@ -504,7 +504,12 @@ alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,
        if (!internal_config.single_file_segments)
                close(fd);
 
-       *(int *)addr = *(int *)addr;
+       /* we need to trigger a write to the page to enforce page fault and
+        * ensure that page is accessible to us, but we can't overwrite value
+        * that is already there, so read the old value, and write itback.
+        * kernel populates the page with zeroes initially.
+        */
+       *(volatile int *)addr = *(volatile int *)addr;
 
        ms->addr = addr;
        ms->hugepage_sz = alloc_sz;