36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
|
From 0a4b1ee746c1cfbfdfe586ce5f97b047fcad09f8 Mon Sep 17 00:00:00 2001
|
||
|
From: Stephen Warren <swarren@nvidia.com>
|
||
|
Date: Thu, 2 Jun 2011 16:44:39 -0600
|
||
|
Subject: [PATCH 23/23] UCM: Fix deadlock following failed get _verb
|
||
|
|
||
|
When querying the current verb without a verb set, snd_use_case_get bails
|
||
|
out early without unlocking uc_mgr->mutex. This causes subsequent API calls
|
||
|
to hang. Instead, s/return/goto __end/.
|
||
|
|
||
|
Signed-off-by: Stephen Warren <swarren@nvidia.com>
|
||
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||
|
---
|
||
|
src/ucm/main.c | 6 ++++--
|
||
|
1 files changed, 4 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/ucm/main.c b/src/ucm/main.c
|
||
|
index f8ceeeb..fb4aa91 100644
|
||
|
--- a/src/ucm/main.c
|
||
|
+++ b/src/ucm/main.c
|
||
|
@@ -1132,8 +1132,10 @@ int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
|
||
|
}
|
||
|
err = 0;
|
||
|
} else if (strcmp(identifier, "_verb") == 0) {
|
||
|
- if (uc_mgr->active_verb == NULL)
|
||
|
- return -ENOENT;
|
||
|
+ if (uc_mgr->active_verb == NULL) {
|
||
|
+ err = -ENOENT;
|
||
|
+ goto __end;
|
||
|
+ }
|
||
|
*value = strdup(uc_mgr->active_verb->name);
|
||
|
if (*value == NULL) {
|
||
|
err = -ENOMEM;
|
||
|
--
|
||
|
1.7.5.3
|
||
|
|