]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ASoC: Intel: avs: Fix memory leak in avs_register_i2s_test_boards()
authorCezary Rojewski <cezary.rojewski@intel.com>
Tue, 7 Apr 2026 08:54:58 +0000 (10:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Apr 2026 11:30:40 +0000 (13:30 +0200)
[ Upstream commit c5408d818316061d6063c11a4f47f1ba25a3a708 ]

Caller is responsible for freeing array allocated with
parse_int_array().

Found out by Coverity.

Fixes: 7d859189de13 ("ASoC: Intel: avs: Allow to specify custom configurations with i2s_test")
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://patch.msgid.link/20260407085459.400628-1-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/intel/avs/board_selection.c

index 52e6266a7cb86f9f7b6fbd66b26a081357497661..96dc637ccb20c82188103992f7c94a297ad4f6b6 100644 (file)
@@ -520,7 +520,8 @@ static int avs_register_i2s_test_boards(struct avs_dev *adev)
        if (num_elems > max_ssps) {
                dev_err(adev->dev, "board supports only %d SSP, %d specified\n",
                        max_ssps, num_elems);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto exit;
        }
 
        for (ssp_port = 0; ssp_port < num_elems; ssp_port++) {
@@ -528,11 +529,13 @@ static int avs_register_i2s_test_boards(struct avs_dev *adev)
                for_each_set_bit(tdm_slot, &tdm_slots, 16) {
                        ret = avs_register_i2s_test_board(adev, ssp_port, tdm_slot);
                        if (ret)
-                               return ret;
+                               goto exit;
                }
        }
 
-       return 0;
+exit:
+       kfree(array);
+       return ret;
 }
 
 static int avs_register_i2s_board(struct avs_dev *adev, struct snd_soc_acpi_mach *mach)