diff options
| -rw-r--r-- | sound/core/control.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/core/control.c b/sound/core/control.c index 070aab490191..45a818002d99 100644 --- a/sound/core/control.c +++ b/sound/core/control.c | |||
| @@ -31,6 +31,7 @@ | |||
| 31 | 31 | ||
| 32 | /* max number of user-defined controls */ | 32 | /* max number of user-defined controls */ |
| 33 | #define MAX_USER_CONTROLS 32 | 33 | #define MAX_USER_CONTROLS 32 |
| 34 | #define MAX_CONTROL_COUNT 1028 | ||
| 34 | 35 | ||
| 35 | struct snd_kctl_ioctl { | 36 | struct snd_kctl_ioctl { |
| 36 | struct list_head list; /* list of all ioctls */ | 37 | struct list_head list; /* list of all ioctls */ |
| @@ -195,6 +196,10 @@ static struct snd_kcontrol *snd_ctl_new(struct snd_kcontrol *control, | |||
| 195 | 196 | ||
| 196 | if (snd_BUG_ON(!control || !control->count)) | 197 | if (snd_BUG_ON(!control || !control->count)) |
| 197 | return NULL; | 198 | return NULL; |
| 199 | |||
| 200 | if (control->count > MAX_CONTROL_COUNT) | ||
| 201 | return NULL; | ||
| 202 | |||
| 198 | kctl = kzalloc(sizeof(*kctl) + sizeof(struct snd_kcontrol_volatile) * control->count, GFP_KERNEL); | 203 | kctl = kzalloc(sizeof(*kctl) + sizeof(struct snd_kcontrol_volatile) * control->count, GFP_KERNEL); |
| 199 | if (kctl == NULL) { | 204 | if (kctl == NULL) { |
| 200 | snd_printk(KERN_ERR "Cannot allocate control instance\n"); | 205 | snd_printk(KERN_ERR "Cannot allocate control instance\n"); |
