ASoC: SOF: Fix probe point getter
authorCezary Rojewski <cezary.rojewski@intel.com>
Mon, 9 Mar 2020 14:21:24 +0000 (15:21 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 10 Mar 2020 13:50:59 +0000 (13:50 +0000)
Firmware API changes which introduced 'num_elems' param in several probe
structs such as sof_ipc_probe_dma_add_params also impacted getter for
both, DMA and probe points. All struct handlers except for
sof_ipc_probe_info_params have been updated. Align said handler too to
calculate payload size correctly.

Fixes: f3b433e4699f ("ASoC: SOF: Implement Probe IPC API")
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200309142124.29262-1-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/probe.c

index 2b2f3dcfc7e9fd87f27176ba364e5ef64f6e1238..c38169fe00c5d690d562fbe3d0c01cda35e301be 100644 (file)
@@ -95,13 +95,17 @@ static int sof_ipc_probe_info(struct snd_sof_dev *sdev, unsigned int cmd,
        if (!reply->num_elems)
                goto exit;
 
-       bytes = reply->num_elems * sizeof(reply->dma[0]);
+       if (cmd == SOF_IPC_PROBE_DMA_INFO)
+               bytes = sizeof(reply->dma[0]);
+       else
+               bytes = sizeof(reply->desc[0]);
+       bytes *= reply->num_elems;
        *params = kmemdup(&reply->dma[0], bytes, GFP_KERNEL);
        if (!*params) {
                ret = -ENOMEM;
                goto exit;
        }
-       *num_params = msg.num_elems;
+       *num_params = reply->num_elems;
 
 exit:
        kfree(reply);