[alsa-devel] [PATCH] ALSA: hda/ca0132 - Avoid division by zero in dspxfr_one_seg()

Takashi Iwai tiwai at suse.de
Thu Mar 7 09:18:20 CET 2013


At Thu,  7 Mar 2013 00:13:51 -0500,
Xi Wang wrote:
> 
> Move the zero check `hda_frame_size_words == 0' before the modulus
> `buffer_size_words % hda_frame_size_words'.
> 
> Also remove the redundant null check `buffer_addx == NULL'.
> 
> Signed-off-by: Xi Wang <xi.wang at gmail.com>

Thanks, applied.


Takashi

> ---
>  sound/pci/hda/patch_ca0132.c |    8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
> index db02c1e..eefc456 100644
> --- a/sound/pci/hda/patch_ca0132.c
> +++ b/sound/pci/hda/patch_ca0132.c
> @@ -2298,6 +2298,11 @@ static int dspxfr_one_seg(struct hda_codec *codec,
>  	hda_frame_size_words = ((sample_rate_div == 0) ? 0 :
>  			(num_chans * sample_rate_mul / sample_rate_div));
>  
> +	if (hda_frame_size_words == 0) {
> +		snd_printdd(KERN_ERR "frmsz zero\n");
> +		return -EINVAL;
> +	}
> +
>  	buffer_size_words = min(buffer_size_words,
>  				(unsigned int)(UC_RANGE(chip_addx, 1) ?
>  				65536 : 32768));
> @@ -2308,8 +2313,7 @@ static int dspxfr_one_seg(struct hda_codec *codec,
>  		   chip_addx, hda_frame_size_words, num_chans,
>  		   sample_rate_mul, sample_rate_div, buffer_size_words);
>  
> -	if ((buffer_addx == NULL) || (hda_frame_size_words == 0) ||
> -	    (buffer_size_words < hda_frame_size_words)) {
> +	if (buffer_size_words < hda_frame_size_words) {
>  		snd_printdd(KERN_ERR "dspxfr_one_seg:failed\n");
>  		return -EINVAL;
>  	}
> -- 
> 1.7.10.4
> 


More information about the Alsa-devel mailing list