af_unix: Iterate all vertices by DFS.
commit 6ba76fd2 upstream. The new GC will use a depth first search graph algorithm to find cyclic references. The algorithm visits every vertex exactly once. Here, we implement the DFS part without recursion so that no one can abuse it. unix_walk_scc() marks every vertex unvisited by initialising index as UNIX_VERTEX_INDEX_UNVISITED and iterates inflight vertices in unix_unvisited_vertices and call __unix_walk_scc() to start DFS from an arbitrary vertex. __unix_walk_scc() iterates all edges starting from the vertex and explores the neighbour vertices with DFS using edge_stack. After visiting all neighbours, __unix_walk_scc() moves the visited vertex to unix_visited_vertices so that unix_walk_scc() will not restart DFS from the visited vertex. Signed-off-by:Kuniyuki Iwashima <kuniyu@amazon.com> Acked-by:
Paolo Abeni <pabeni@redhat.com> Link: https://lore.kernel.org/r/20240325202425.60930-6-kuniyu@amazon.com Signed-off-by:
Jakub Kicinski <kuba@kernel.org> Signed-off-by:
Lee Jones <lee@kernel.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Loading
-
mentioned in commit ec52bf48
-
mentioned in commit 2cafd983
-
mentioned in commit dcf94027
-
mentioned in commit 0bcac9a6
-
mentioned in commit 86190586
-
mentioned in commit 8083635f
-
mentioned in commit 784cebca
-
mentioned in commit 8e56df84
-
mentioned in commit 9d373210
-
mentioned in commit d0f847bd
-
mentioned in commit 7da309a0
-
mentioned in commit 16dca903
-
mentioned in commit 98aebd30
Please sign in to comment