Commit dc907643 authored by Takashi Iwai's avatar Takashi Iwai Committed by sanglipeng
Browse files

ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl

stable inclusion
from stable-v5.10.195
commit 61b918dfb675f4a9a065392c6896993d638d6e5a
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I95JOC

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=61b918dfb675f4a9a065392c6896993d638d6e5a



--------------------------------

commit 358040e3 upstream.

The update of rate_num/den and msbits were factored out to
fixup_unreferenced_params() function to be called explicitly after the
hw_refine or hw_params procedure.  It's called from
snd_pcm_hw_refine_user(), but it's forgotten in the PCM compat ioctl.
This ended up with the incomplete rate_num/den and msbits parameters
when 32bit compat ioctl is used.

This patch adds the missing call in snd_pcm_ioctl_hw_params_compat().

Reported-by: default avatar <Meng_Cai@novatek.com.cn>
Fixes: f9a076bf ("ALSA: pcm: calculate non-mask/non-interval parameters always when possible")
Reviewed-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Reviewed-by: default avatarJaroslav Kysela <perex@perex.cz>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20230829134344.31588-1-tiwai@suse.de


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarsanglipeng <sanglipeng1@jd.com>
parent 4c366a4a
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -252,10 +252,14 @@ static int snd_pcm_ioctl_hw_params_compat(struct snd_pcm_substream *substream,
		goto error;
	}

	if (refine)
	if (refine) {
		err = snd_pcm_hw_refine(substream, data);
	else
		if (err < 0)
			goto error;
		err = fixup_unreferenced_params(substream, data);
	} else {
		err = snd_pcm_hw_params(substream, data);
	}
	if (err < 0)
		goto error;
	if (copy_to_user(data32, data, sizeof(*data32)) ||