[PATCH] ASoC: cpcap: use the platform OF node setter

From: Yige Jiang

Date: Wed Nov 04 2026 - 13:44:42 EST


cpcap_codec_probe() gets the audio-codec child node and assigns it
only to dev.of_node. Platform device release now puts dev.fwnode,
so the acquired node reference is never returned.

Use platform_device_set_of_node() to synchronize both fields and
give the device its own reference, then put the local lookup
reference. The device keeps the node until it is replaced or the
platform device is released; a probe retry also drops the old
device-owned reference.

Fixes: 7b5b51b2b05c ("driver core: platform: count references to all kinds of firmware nodes")
Assisted-by: LLM
Signed-off-by: Yige Jiang <yigejiang86@xxxxxxxxx>
---
Based on linux-next next-20261102 (2637bdec0535).
Compile-tested: arm64, GCC 14.2.0, W=1, CONFIG_OF_DYNAMIC=y.
COMPILE_TEST=y.
Baseline and patched target objects built from this exact base.
No full kernel/module-link, hardware or runtime test was performed.
AI assistance: Codex (LLM) for ownership analysis, code and changelog.

sound/soc/codecs/cpcap.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/codecs/cpcap.c b/sound/soc/codecs/cpcap.c
index eaaf141dea57..eda72fe830ae 100644
--- a/sound/soc/codecs/cpcap.c
+++ b/sound/soc/codecs/cpcap.c
@@ -1761,7 +1761,8 @@ static int cpcap_codec_probe(struct platform_device *pdev)
if (!codec_node)
return -ENODEV;

- pdev->dev.of_node = codec_node;
+ platform_device_set_of_node(pdev, codec_node);
+ of_node_put(codec_node);

cpcap = devm_kzalloc(&pdev->dev, sizeof(*cpcap), GFP_KERNEL);
if (!cpcap)

base-commit: 2637bdec0535a2044cd830eba9a79363651d9043