]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
libfrog: fix workqueue_add error out
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 1 Nov 2019 19:48:52 +0000 (15:48 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Fri, 1 Nov 2019 19:48:52 +0000 (15:48 -0400)
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>
libfrog/workqueue.c

index 07f11a7b993256dbceef08c7f1c6a465c47e25fe..a93bba3d30a4c7bfd619ca1aad972e9ff30f1aa9 100644 (file)
@@ -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;
 }
 
 /*