sound: oss/sb_audio: cap value in sb201_audio_set_speed()
We set "s" before we have capped "speed" so it could be the wrong value. This could lead to a divide by zero bug. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
committed by
Takashi Iwai
parent
190006f9d6
commit
379170a42c
@@ -442,7 +442,7 @@ static int sb201_audio_set_speed(int dev, int speed)
|
|||||||
{
|
{
|
||||||
sb_devc *devc = audio_devs[dev]->devc;
|
sb_devc *devc = audio_devs[dev]->devc;
|
||||||
int tmp;
|
int tmp;
|
||||||
int s = speed * devc->channels;
|
int s;
|
||||||
|
|
||||||
if (speed > 0)
|
if (speed > 0)
|
||||||
{
|
{
|
||||||
@@ -452,6 +452,7 @@ static int sb201_audio_set_speed(int dev, int speed)
|
|||||||
speed = 44100;
|
speed = 44100;
|
||||||
if (devc->opened & OPEN_READ && speed > 15000)
|
if (devc->opened & OPEN_READ && speed > 15000)
|
||||||
speed = 15000;
|
speed = 15000;
|
||||||
|
s = speed * devc->channels;
|
||||||
devc->tconst = (256 - ((1000000 + s / 2) / s)) & 0xff;
|
devc->tconst = (256 - ((1000000 + s / 2) / s)) & 0xff;
|
||||||
tmp = 256 - devc->tconst;
|
tmp = 256 - devc->tconst;
|
||||||
speed = ((1000000 + tmp / 2) / tmp) / devc->channels;
|
speed = ((1000000 + tmp / 2) / tmp) / devc->channels;
|
||||||
|
Reference in New Issue
Block a user