mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
ASoC: SOF: ipc4-control: Use the correct size for scontrol->ipc_control_data
The size of the data behind scontrol->ipc_control_data is stored in
scontrol->size, use this when copying data for backup/restore.
Fixes: db38d86d0c ("ASoC: sof: Improve sof_ipc4_bytes_ext_put function")
Cc: stable@vger.kernel.org
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://patch.msgid.link/20251217143945.2667-4-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a653820700
commit
c1876fc33c
|
|
@ -66,7 +66,7 @@ static int sof_ipc4_set_get_kcontrol_data(struct snd_sof_control *scontrol,
|
|||
* configuration
|
||||
*/
|
||||
memcpy(scontrol->ipc_control_data, scontrol->old_ipc_control_data,
|
||||
scontrol->max_size);
|
||||
scontrol->size);
|
||||
kfree(scontrol->old_ipc_control_data);
|
||||
scontrol->old_ipc_control_data = NULL;
|
||||
/* Send the last known good configuration to firmware */
|
||||
|
|
@ -567,7 +567,7 @@ static int sof_ipc4_bytes_ext_put(struct snd_sof_control *scontrol,
|
|||
if (!scontrol->old_ipc_control_data) {
|
||||
/* Create a backup of the current, valid bytes control */
|
||||
scontrol->old_ipc_control_data = kmemdup(scontrol->ipc_control_data,
|
||||
scontrol->max_size, GFP_KERNEL);
|
||||
scontrol->size, GFP_KERNEL);
|
||||
if (!scontrol->old_ipc_control_data)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
@ -575,7 +575,7 @@ static int sof_ipc4_bytes_ext_put(struct snd_sof_control *scontrol,
|
|||
/* Copy the whole binary data which includes the ABI header and the payload */
|
||||
if (copy_from_user(data, tlvd->tlv, header.length)) {
|
||||
memcpy(scontrol->ipc_control_data, scontrol->old_ipc_control_data,
|
||||
scontrol->max_size);
|
||||
scontrol->size);
|
||||
kfree(scontrol->old_ipc_control_data);
|
||||
scontrol->old_ipc_control_data = NULL;
|
||||
return -EFAULT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user