From d7052df849278ca685bae113a580bfaadce3d2aa Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Fri, 23 Apr 2010 17:51:28 -0500 Subject: [PATCH] Add asserts to VLock* functions Make sure we don't continue on if we have unbalanced locks and unlocks. Having a negative refcount is a serious internal error, and they are difficult to fix unless we assert right away. Change-Id: Ib9b5b3f209635e0365df96c79ea8bf49c765008b Reviewed-on: http://gerrit.openafs.org/2594 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Daria Brashear --- src/vol/vutil.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vol/vutil.c b/src/vol/vutil.c index 35389d4..c7c7a8d 100644 --- a/src/vol/vutil.c +++ b/src/vol/vutil.c @@ -1010,6 +1010,8 @@ _VLockFd(FD_t fd, afs_uint32 offset, int locktype, int nonblock) int cmd = AFS_SETLKW; struct afs_st_flock sf; + opr_Assert(fd >= 0); + if (locktype == READ_LOCK) { l_type = F_RDLCK; } @@ -1146,6 +1148,7 @@ VLockFileLock(struct VLockFile *lf, afs_uint32 offset, int locktype, int nonbloc opr_mutex_enter(&lf->mutex); if (lf->fd == INVALID_FD) { + opr_Assert(lf->refcount == 0); lf->fd = _VOpenPath(lf->path); if (lf->fd == INVALID_FD) { opr_mutex_exit(&lf->mutex); @@ -1155,12 +1158,15 @@ VLockFileLock(struct VLockFile *lf, afs_uint32 offset, int locktype, int nonbloc lf->refcount++; + opr_Assert(lf->refcount > 0); + opr_mutex_exit(&lf->mutex); code = _VLockFd(lf->fd, offset, locktype, nonblock); if (code) { opr_mutex_enter(&lf->mutex); + opr_Assert(lf->refcount > 0); if (--lf->refcount < 1) { _VCloseFd(lf->fd); lf->fd = INVALID_FD; @@ -1177,6 +1183,7 @@ VLockFileUnlock(struct VLockFile *lf, afs_uint32 offset) opr_mutex_enter(&lf->mutex); opr_Assert(lf->fd != INVALID_FD); + opr_Assert(lf->refcount > 0); if (--lf->refcount < 1) { _VCloseFd(lf->fd); -- 1.9.4