On Sun, Feb 2, 2020 at 4:05 PM Stephen Hemminger <step...@networkplumber.org> wrote: > > On Fri, 31 Jan 2020 22:31:57 +0530 > <jer...@marvell.com> wrote: > > > + /* Create graph object */ > > + graph = calloc(1, sizeof(*graph)); > > + if (graph == NULL) > > + set_err(ENOMEM, fail, "failed to calloc graph object"); > > This won't be safe if used in primary/secondary process model. > You would need to use rte_calloc etc to allow this.
That memory used only local housekeeping purposes. Down in the function, it creates a graph reel from the memzone with all the required data for fast path. see graph_fp_mem_create() workers/secondary process get the real fast path graph object through rte_graph_lookup() which returns the "struct rte_graph *". Followed by invoking rte_graph_walk(struct rte_graph *graph) for the graph walk. struct rte_graph * rte_graph_lookup(const char *name) { const struct rte_memzone *mz; struct rte_graph *rc = NULL; mz = rte_memzone_lookup(name); if (mz) rc = mz->addr; return graph_mem_fixup_secondray(rc); }