Re: [PATCH] ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, Aug 29, 2023 at 03:43:44PM +0200, Takashi Iwai wrote:
> 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: Meng_Cai@xxxxxxxxxxxxxx
> Fixes: f9a076bff053 ("ALSA: pcm: calculate non-mask/non-interval parameters always when possible")
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> ---
>  sound/core/pcm_compat.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)

Indeed. I did overlook PCM compat layer. The branch for hw refine compat
ioctl should call the fixup, while the branch for hw params has no need
since the helper function call the fixup.

Reviewed-by: Takashi Sakamoto <o-takashi@xxxxxxxxxxxxx>

> diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c
> index 42c2ada8e888..c96483091f30 100644
> --- a/sound/core/pcm_compat.c
> +++ b/sound/core/pcm_compat.c
> @@ -253,10 +253,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)) ||
> -- 
> 2.35.3


Regards

Takashi Sakamoto



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux