]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: rsnd: fix OF node reference leak in rsnd_ssiu_probe()
authorHaotian Zhang <vulab@iscas.ac.cn>
Wed, 12 Nov 2025 06:57:09 +0000 (14:57 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 13 Nov 2025 00:36:01 +0000 (00:36 +0000)
rsnd_ssiu_probe() leaks an OF node reference obtained by
rsnd_ssiu_of_node(). The node reference is acquired but
never released across all return paths.

Fix it by declaring the device node with the __free(device_node)
cleanup construct to ensure automatic release when the variable goes
out of scope.

Fixes: 4e7788fb8018 ("ASoC: rsnd: add SSIU BUSIF support")
Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/20251112065709.1522-1-vulab@iscas.ac.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/renesas/rcar/ssiu.c

index faf351126d57440291e1bf6c09f4bf4a0c9395ca..244fb833292a748be620607edb1f2a8a0a6d94d5 100644 (file)
@@ -509,7 +509,7 @@ void rsnd_parse_connect_ssiu(struct rsnd_dai *rdai,
 int rsnd_ssiu_probe(struct rsnd_priv *priv)
 {
        struct device *dev = rsnd_priv_to_dev(priv);
-       struct device_node *node;
+       struct device_node *node __free(device_node) = rsnd_ssiu_of_node(priv);
        struct rsnd_ssiu *ssiu;
        struct rsnd_mod_ops *ops;
        const int *list = NULL;
@@ -522,7 +522,6 @@ int rsnd_ssiu_probe(struct rsnd_priv *priv)
         * see
         *      rsnd_ssiu_bufsif_to_id()
         */
-       node = rsnd_ssiu_of_node(priv);
        if (node)
                nr = rsnd_node_count(priv, node, SSIU_NAME);
        else