[PATCH] graph: fix node shrink

Jerin Jacob jerinjacobk at gmail.com
Mon Jan 23 14:32:48 CET 2023


On Thu, Jan 19, 2023 at 4:02 PM David Marchand
<david.marchand at 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: stable at dpdk.org
>
> Signed-off-by: David Marchand <david.marchand at 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
>


More information about the stable mailing list