On Thu, Jan 19, 2023 at 4:02 PM David Marchand <david.march...@redhat.com> wrote: > > If the node id check failed, graph_lock was not taken before releasing.
Thanks for the fix. Why not this oneline fix? [main][dpdk.org] $ git diff diff --git a/lib/graph/node.c b/lib/graph/node.c index fc6345de07..89cdcf0207 100644 --- a/lib/graph/node.c +++ b/lib/graph/node.c @@ -293,8 +293,8 @@ rte_node_edge_shrink(rte_node_t id, rte_edge_t size) rte_edge_t rc = RTE_EDGE_ID_INVALID; struct node *node; - NODE_ID_CHECK(id); graph_spinlock_lock(); + NODE_ID_CHECK(id); STAILQ_FOREACH(node, &node_list, next) { if (node->id == id) { > > Fixes: c59dac2ca14a ("graph: implement node operations") > Cc: sta...@dpdk.org > > Signed-off-by: David Marchand <david.march...@redhat.com> > --- > lib/graph/node.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/lib/graph/node.c b/lib/graph/node.c > index fc6345de07..149414dcd9 100644 > --- a/lib/graph/node.c > +++ b/lib/graph/node.c > @@ -300,16 +300,16 @@ rte_node_edge_shrink(rte_node_t id, rte_edge_t size) > if (node->id == id) { > if (node->nb_edges < size) { > rte_errno = E2BIG; > - goto fail; > + } else { > + node->nb_edges = size; > + rc = size; > } > - node->nb_edges = size; > - rc = size; > break; > } > } > > -fail: > graph_spinlock_unlock(); > +fail: > return rc; > } > > -- > 2.39.0 >