sound: snd_ctl_remove_user_ctl: prevent removal of kernel controls
[safe/jmp/linux-2.6] / sound / core / control.c
index bc64b72..a8b7fab 100644 (file)
@@ -436,6 +436,10 @@ static int snd_ctl_remove_user_ctl(struct snd_ctl_file * file,
                ret = -ENOENT;
                goto error;
        }
+       if (!(kctl->vd[0].access & SNDRV_CTL_ELEM_ACCESS_USER)) {
+               ret = -EINVAL;
+               goto error;
+       }
        for (idx = 0; idx < kctl->count; idx++)
                if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) {
                        ret = -EBUSY;