ALSA: control: Use struct_size()
authorTakashi Iwai <tiwai@suse.de>
Fri, 31 May 2019 09:44:44 +0000 (11:44 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 31 May 2019 09:44:44 +0000 (11:44 +0200)
For code simplification and safety, use struct_size() macro for
calculating the snd_kcontrol object size with the variable array.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/control.c

index a5cc9a874062c4a235e1f6909e05a9729c78f166..04eb1a15ffb401bc83f172939dcd60977389cee2 100644 (file)
@@ -211,16 +211,12 @@ EXPORT_SYMBOL(snd_ctl_notify);
 static int snd_ctl_new(struct snd_kcontrol **kctl, unsigned int count,
                       unsigned int access, struct snd_ctl_file *file)
 {
-       unsigned int size;
        unsigned int idx;
 
        if (count == 0 || count > MAX_CONTROL_COUNT)
                return -EINVAL;
 
-       size  = sizeof(struct snd_kcontrol);
-       size += sizeof(struct snd_kcontrol_volatile) * count;
-
-       *kctl = kzalloc(size, GFP_KERNEL);
+       *kctl = kzalloc(struct_size(*kctl, vd, count), GFP_KERNEL);
        if (!*kctl)
                return -ENOMEM;