]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: sti: Return errors from regmap_field_alloc()
authorSander Vanheule <sander@svanheule.net>
Fri, 20 Feb 2026 15:26:33 +0000 (16:26 +0100)
committerMark Brown <broonie@kernel.org>
Sun, 1 Mar 2026 23:48:22 +0000 (23:48 +0000)
When regmap_field_alloc() fails, it can return an error. Specifically,
it will return PTR_ERR(-ENOMEM) when the allocation returns a NULL
pointer. The code then uses these allocations with a simple NULL check:

    if (player->clk_sel) {
        // May dereference invalid pointer (-ENOMEM)
        err = regmap_field_write(player->clk_sel, ...);
    }

Ensure initialization fails by forwarding the errors from
regmap_field_alloc(), thus avoiding the use of the invalid pointers.

Fixes: 76c2145ded6b ("ASoC: sti: Add CPU DAI driver for playback")
Signed-off-by: Sander Vanheule <sander@svanheule.net>
Link: https://patch.msgid.link/20260220152634.480766-2-sander@svanheule.net
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sti/uniperif_player.c

index 6d1ce030963c628935b5762de6ae7d0c7da9f91c..f1b7e76f97b58fa8d12b5014a013a06d11c10ac2 100644 (file)
@@ -1029,7 +1029,12 @@ static int uni_player_parse_dt_audio_glue(struct platform_device *pdev,
        }
 
        player->clk_sel = regmap_field_alloc(regmap, regfield[0]);
+       if (IS_ERR(player->clk_sel))
+               return PTR_ERR(player->clk_sel);
+
        player->valid_sel = regmap_field_alloc(regmap, regfield[1]);
+       if (IS_ERR(player->valid_sel))
+               return PTR_ERR(player->valid_sel);
 
        return 0;
 }