Loading sound/core/control.c +5 −4 Original line number Original line Diff line number Diff line Loading @@ -433,15 +433,16 @@ static int snd_ctl_remove_unlocked_id(struct snd_ctl_file * file, down_write(&card->controls_rwsem); down_write(&card->controls_rwsem); kctl = snd_ctl_find_id(card, id); kctl = snd_ctl_find_id(card, id); if (kctl == NULL) { if (kctl == NULL) { up_write(&card->controls_rwsem); ret = -ENOENT; return -ENOENT; goto error; } } for (idx = 0; idx < kctl->count; idx++) for (idx = 0; idx < kctl->count; idx++) if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) { if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) { up_write(&card->controls_rwsem); ret = -EBUSY; return -EBUSY; goto error; } } ret = snd_ctl_remove(card, kctl); ret = snd_ctl_remove(card, kctl); error: up_write(&card->controls_rwsem); up_write(&card->controls_rwsem); return ret; return ret; } } Loading Loading
sound/core/control.c +5 −4 Original line number Original line Diff line number Diff line Loading @@ -433,15 +433,16 @@ static int snd_ctl_remove_unlocked_id(struct snd_ctl_file * file, down_write(&card->controls_rwsem); down_write(&card->controls_rwsem); kctl = snd_ctl_find_id(card, id); kctl = snd_ctl_find_id(card, id); if (kctl == NULL) { if (kctl == NULL) { up_write(&card->controls_rwsem); ret = -ENOENT; return -ENOENT; goto error; } } for (idx = 0; idx < kctl->count; idx++) for (idx = 0; idx < kctl->count; idx++) if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) { if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) { up_write(&card->controls_rwsem); ret = -EBUSY; return -EBUSY; goto error; } } ret = snd_ctl_remove(card, kctl); ret = snd_ctl_remove(card, kctl); error: up_write(&card->controls_rwsem); up_write(&card->controls_rwsem); return ret; return ret; } } Loading