ALSA: timer: Reject user params with too small ticks
am: 9879f9d01a
Change-Id: I3fb699e66b0e89da94eea1124c89fedf9f2cc576
This commit is contained in:
commit
5b01070e45
1 changed files with 15 additions and 3 deletions
|
@ -1700,10 +1700,22 @@ static int snd_timer_user_params(struct file *file,
|
||||||
return -EBADFD;
|
return -EBADFD;
|
||||||
if (copy_from_user(¶ms, _params, sizeof(params)))
|
if (copy_from_user(¶ms, _params, sizeof(params)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
if (!(t->hw.flags & SNDRV_TIMER_HW_SLAVE) && params.ticks < 1) {
|
if (!(t->hw.flags & SNDRV_TIMER_HW_SLAVE)) {
|
||||||
|
u64 resolution;
|
||||||
|
|
||||||
|
if (params.ticks < 1) {
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Don't allow resolution less than 1ms */
|
||||||
|
resolution = snd_timer_resolution(tu->timeri);
|
||||||
|
resolution *= params.ticks;
|
||||||
|
if (resolution < 1000000) {
|
||||||
|
err = -EINVAL;
|
||||||
|
goto _end;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (params.queue_size > 0 &&
|
if (params.queue_size > 0 &&
|
||||||
(params.queue_size < 32 || params.queue_size > 1024)) {
|
(params.queue_size < 32 || params.queue_size > 1024)) {
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue