summaryrefslogtreecommitdiff
path: root/cmds-scrub.c
diff options
context:
space:
mode:
authorRakesh Pandit <rakesh@tuxera.com>2014-03-15 01:49:45 +0200
committerChris Mason <clm@fb.com>2014-03-21 09:51:31 -0700
commit5d483022363254229afff73f79ecd6dd19910dab (patch)
treebd9af3e531f886134e24ac0b95965db9dc54c9ba /cmds-scrub.c
parent87d1676b22e6b1f166e4f4fcdec7a2af968e59dc (diff)
Btrfs-progs: scrub: don't call unlock if pthread_mutex_lock fails
If pthread_mutex_lock fails (rare but fix it anyway), don't call pthread_mutex_unlock on mutex. Rationale being that if pthread_mutex_lock fails pthread_mutex_unlock will always fail and overwrite actual error value in err. Signed-off-by: Rakesh Pandit <rakesh@tuxera.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'cmds-scrub.c')
-rw-r--r--cmds-scrub.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/cmds-scrub.c b/cmds-scrub.c
index 128537b8..ca11fb59 100644
--- a/cmds-scrub.c
+++ b/cmds-scrub.c
@@ -776,7 +776,7 @@ static int scrub_write_progress(pthread_mutex_t *m, const char *fsid,
ret = pthread_mutex_lock(m);
if (ret) {
err = -ret;
- goto out;
+ goto fail;
}
ret = pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old);
@@ -808,6 +808,7 @@ out:
if (ret && !err)
err = -ret;
+fail:
ret = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old);
if (ret && !err)
err = -ret;