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 13164d6a
-
mentioned in commit f370b856
-
mentioned in commit 772c6779
-
mentioned in commit 662507cc
-
mentioned in commit 2b1a1aa8
-
mentioned in commit 0adcea1e
-
mentioned in commit f924f83e
-
mentioned in commit e43379a5
-
mentioned in commit 2841b6ab
-
mentioned in commit eca1a070
-
mentioned in commit 539696f4
-
mentioned in commit 267cd080
-
mentioned in commit 45271a2c
Please sign in to comment