sound: snd_ctl_remove_unlocked_id: simplify error paths
authorClemens Ladisch <clemens@ladisch.de>
Mon, 17 Aug 2009 10:26:34 +0000 (12:26 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 17 Aug 2009 10:48:06 +0000 (12:48 +0200)
Use a common exit path to release the mutex and to return a possible
error.

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

index 66d6aaf..9d91f77 100644 (file)
@@ -433,15 +433,16 @@ static int snd_ctl_remove_unlocked_id(struct snd_ctl_file * file,
        down_write(&card->controls_rwsem);
        kctl = snd_ctl_find_id(card, id);
        if (kctl == NULL) {
-               up_write(&card->controls_rwsem);
-               return -ENOENT;
+               ret = -ENOENT;
+               goto error;
        }
        for (idx = 0; idx < kctl->count; idx++)
                if (kctl->vd[idx].owner != NULL && kctl->vd[idx].owner != file) {
-                       up_write(&card->controls_rwsem);
-                       return -EBUSY;
+                       ret = -EBUSY;
+                       goto error;
                }
        ret = snd_ctl_remove(card, kctl);
+error:
        up_write(&card->controls_rwsem);
        return ret;
 }