Skip to content
  • Dan Carpenter's avatar
    ALSA: compress: prevent potential divide by zero bugs · 34f6404b
    Dan Carpenter authored
    [ Upstream commit 678e2b44
    
     ]
    
    The problem is seen in the q6asm_dai_compr_set_params() function:
    
    	ret = q6asm_map_memory_regions(dir, prtd->audio_client, prtd->phys,
    				       (prtd->pcm_size / prtd->periods),
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    				       prtd->periods);
    
    In this code prtd->pcm_size is the buffer_size and prtd->periods comes
    from params->buffer.fragments.  If we allow the number of fragments to
    be zero then it results in a divide by zero bug.  One possible fix would
    be to use prtd->pcm_count directly instead of using the division to
    re-calculate it.  But I decided that it doesn't really make sense to
    allow zero fragments.
    
    Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    34f6404b