aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2019-11-01 15:48:52 -0400
committerEric Sandeen <sandeen@sandeen.net>2019-11-01 15:48:52 -0400
commita57cc3207accc7dbca4a5aab9d0de51254c4357b (patch)
treeb294abee8cb4d825dc505816a09d3e44b7240ba4
parentb8302b7f9b470cf4ab2403f2066b2de8de0dad50 (diff)
downloadxfsprogs-dev-a57cc3207accc7dbca4a5aab9d0de51254c4357b.tar.gz
libfrog: fix workqueue_add error out
Don't forget to unlock before erroring out. Coverity-id: 1454843 Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r--libfrog/workqueue.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libfrog/workqueue.c b/libfrog/workqueue.c
index 07f11a7b99..a93bba3d30 100644
--- a/libfrog/workqueue.c
+++ b/libfrog/workqueue.c
@@ -142,8 +142,11 @@ workqueue_add(
if (wq->next_item == NULL) {
assert(wq->item_count == 0);
ret = pthread_cond_signal(&wq->wakeup);
- if (ret)
- goto out_item;
+ if (ret) {
+ pthread_mutex_unlock(&wq->lock);
+ free(wi);
+ return ret;
+ }
wq->next_item = wi;
} else {
wq->last_item->next = wi;
@@ -153,9 +156,6 @@ workqueue_add(
pthread_mutex_unlock(&wq->lock);
return 0;
-out_item:
- free(wi);
- return ret;
}
/*