diff options
Diffstat (limited to 'sound/core/control.c')
| -rw-r--r-- | sound/core/control.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/core/control.c b/sound/core/control.c index 7e86a5b9f3b5..9768a3963c8f 100644 --- a/sound/core/control.c +++ b/sound/core/control.c | |||
| @@ -86,6 +86,7 @@ static int snd_ctl_open(struct inode *inode, struct file *file) | |||
| 86 | write_lock_irqsave(&card->ctl_files_rwlock, flags); | 86 | write_lock_irqsave(&card->ctl_files_rwlock, flags); |
| 87 | list_add_tail(&ctl->list, &card->ctl_files); | 87 | list_add_tail(&ctl->list, &card->ctl_files); |
| 88 | write_unlock_irqrestore(&card->ctl_files_rwlock, flags); | 88 | write_unlock_irqrestore(&card->ctl_files_rwlock, flags); |
| 89 | snd_card_unref(card); | ||
| 89 | return 0; | 90 | return 0; |
| 90 | 91 | ||
| 91 | __error: | 92 | __error: |
| @@ -93,6 +94,8 @@ static int snd_ctl_open(struct inode *inode, struct file *file) | |||
| 93 | __error2: | 94 | __error2: |
| 94 | snd_card_file_remove(card, file); | 95 | snd_card_file_remove(card, file); |
| 95 | __error1: | 96 | __error1: |
| 97 | if (card) | ||
| 98 | snd_card_unref(card); | ||
| 96 | return err; | 99 | return err; |
| 97 | } | 100 | } |
| 98 | 101 | ||
