diff options
author | Rakesh Pandit <rakesh@tuxera.com> | 2014-03-15 01:49:45 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-03-21 09:51:31 -0700 |
commit | 5d483022363254229afff73f79ecd6dd19910dab (patch) | |
tree | bd9af3e531f886134e24ac0b95965db9dc54c9ba /cmds-scrub.c | |
parent | 87d1676b22e6b1f166e4f4fcdec7a2af968e59dc (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.c | 3 |
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; |