diff options
Diffstat (limited to 'sound/core/timer.c')
| -rw-r--r-- | sound/core/timer.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/sound/core/timer.c b/sound/core/timer.c index 665089c45560..61a0cec6e1f6 100644 --- a/sound/core/timer.c +++ b/sound/core/timer.c @@ -883,6 +883,11 @@ int snd_timer_new(struct snd_card *card, char *id, struct snd_timer_id *tid,  	if (snd_BUG_ON(!tid))  		return -EINVAL; +	if (tid->dev_class == SNDRV_TIMER_CLASS_CARD || +	    tid->dev_class == SNDRV_TIMER_CLASS_PCM) { +		if (WARN_ON(!card)) +			return -EINVAL; +	}  	if (rtimer)  		*rtimer = NULL;  	timer = kzalloc(sizeof(*timer), GFP_KERNEL); @@ -1520,7 +1525,7 @@ static int snd_timer_user_next_device(struct snd_timer_id __user *_tid)  				} else {  					if (id.subdevice < 0)  						id.subdevice = 0; -					else +					else if (id.subdevice < INT_MAX)  						id.subdevice++;  				}  			} |