diff options
Diffstat (limited to 'sound/core/pcm_lib.c')
| -rw-r--r-- | sound/core/pcm_lib.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index 9acc77eae487..0032278567ad 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -1782,14 +1782,16 @@ static int snd_pcm_lib_ioctl_fifo_size(struct snd_pcm_substream *substream,  {  	struct snd_pcm_hw_params *params = arg;  	snd_pcm_format_t format; -	int channels, width; +	int channels; +	ssize_t frame_size;  	params->fifo_size = substream->runtime->hw.fifo_size;  	if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_FIFO_IN_FRAMES)) {  		format = params_format(params);  		channels = params_channels(params); -		width = snd_pcm_format_physical_width(format); -		params->fifo_size /= width * channels; +		frame_size = snd_pcm_format_size(format, channels); +		if (frame_size > 0) +			params->fifo_size /= (unsigned)frame_size;  	}  	return 0;  }  |