[PATCH 08/20] ASoC: audio-graph-card2: Fix device node leaks in graph_count_c2c()

From: Wentao Liang

Date: Wed Sep 16 2026 - 03:20:48 EST


In graph_count_c2c(), port0 and port1 acquire device node references via
of_node_get() and of_graph_get_next_port(), but they are not marked with
__free(device_node), nor released with of_node_put(). Furthermore, an
extra of_node_get() was called on the result of of_graph_get_next_port().

Add __free(device_node) to port0 and port1, and remove the redundant
of_node_get() wrapper around of_graph_get_next_port() (which already
returns an incremented reference) to prevent device node reference leaks.

Fixes: 5f281c3e82b1 ("ASoC: audio-graph-card2: use __free(device_node) for device node")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
sound/soc/generic/audio-graph-card2.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c
index 0202ed0ee78e..4f2da4d5803b 100644
--- a/sound/soc/generic/audio-graph-card2.c
+++ b/sound/soc/generic/audio-graph-card2.c
@@ -1198,8 +1198,9 @@ static int graph_count_c2c(struct simple_util_priv *priv,
struct link_info *li)
{
struct device_node *ports __free(device_node) = port_to_ports(lnk);
- struct device_node *port0 = of_node_get(lnk);
- struct device_node *port1 = of_node_get(of_graph_get_next_port(ports, of_node_get(port0)));
+ struct device_node *port0 __free(device_node) = of_node_get(lnk);
+ struct device_node *port1 __free(device_node) =
+ of_graph_get_next_port(ports, of_node_get(port0));
struct device_node *ep0 __free(device_node) = of_graph_get_next_port_endpoint(port0, NULL);
struct device_node *ep1 __free(device_node) = of_graph_get_next_port_endpoint(port1, NULL);
struct device_node *codec0 __free(device_node) = of_graph_get_remote_port(ep0);
--
2.34.1