ASoC: Intel: Skylake: Fix the memory overwrite of tlv buffer
TLV buffer can be smaller than the module data, so update the size of data to be copied before doing the copy. Also TLV header consists of two unsigned ints, this is also taken into account here and size modified to reflect this Suggested-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
292d4200a9
Коммит
41556f68d1
|
@ -916,6 +916,13 @@ static int skl_tplg_tlv_control_get(struct snd_kcontrol *kcontrol,
|
|||
skl_get_module_params(skl->skl_sst, (u32 *)bc->params,
|
||||
bc->max, bc->param_id, mconfig);
|
||||
|
||||
/* decrement size for TLV header */
|
||||
size -= 2 * sizeof(u32);
|
||||
|
||||
/* check size as we don't want to send kernel data */
|
||||
if (size > bc->max)
|
||||
size = bc->max;
|
||||
|
||||
if (bc->params) {
|
||||
if (copy_to_user(data, &bc->param_id, sizeof(u32)))
|
||||
return -EFAULT;
|
||||
|
|
Загрузка…
Ссылка в новой задаче