lockfile: unlock file if lockfile permissions cannot be adjusted
If the call to adjust_shared_perm() fails, lock_file returns -1, which to the caller looks like any other failure to lock the file. So in this case, roll back the lockfile before returning so that the lock file is deleted immediately and the lockfile object is left in a predictable state (namely, unlocked). Previously, the lockfile was retained until process cleanup in this situation. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Oct 1, 2014 at 12:28 UTC
41dd4ffaf99532d8344c90a5b1a060ac1f73b232
1 file changed
+1
lockfile.c
+1
@@ -153,6 +153,7 @@ static int lock_file(struct lock_file *lk, const char *path, int flags)
153
int save_errno = errno;
154
error("cannot fix permission bits on %s",
155
lk->filename);
156
+ rollback_lock_file(lk);
157
errno = save_errno;
158
return -1;
159
}