From: VMware, Inc <> Date: Thu, 17 Jun 2010 21:29:23 +0000 (-0700) Subject: lib/lock: give each lock type a unique signature X-Git-Tag: 2010.06.16-268169~117 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1bb3f25c33e8aec76834ac4187b7b7af8cb59ce;p=thirdparty%2Fopen-vm-tools.git lib/lock: give each lock type a unique signature The signature word in the MXUser header had the same value for all of the lock types. Make the signature unique to each lock type. This helps, a bit, when poking around memory. Signed-off-by: Marcelo Vanzin --- diff --git a/open-vm-tools/lib/lock/ulExcl.c b/open-vm-tools/lib/lock/ulExcl.c index 273098ee4..7bc975c04 100644 --- a/open-vm-tools/lib/lock/ulExcl.c +++ b/open-vm-tools/lib/lock/ulExcl.c @@ -22,6 +22,8 @@ #include "userlock.h" #include "ulInt.h" +#define MXUSER_EXCL_SIGNATURE 0x58454B4C // 'LKEX' in memory + struct MXUserExclLock { MXUserHeader header; @@ -185,7 +187,7 @@ MXUser_CreateExclLock(const char *userName, // IN: } lock->header.lockName = properName; - lock->header.lockSignature = USERLOCK_SIGNATURE; + lock->header.lockSignature = MXUSER_EXCL_SIGNATURE; lock->header.lockRank = rank; lock->header.lockDumper = MXUserDumpExclLock; @@ -222,7 +224,7 @@ void MXUser_DestroyExclLock(MXUserExclLock *lock) // IN: { if (lock != NULL) { - ASSERT(lock->header.lockSignature == USERLOCK_SIGNATURE); + ASSERT(lock->header.lockSignature == MXUSER_EXCL_SIGNATURE); if (MXRecLockCount(&lock->recursiveLock) > 0) { MXUserDumpAndPanic(&lock->header, @@ -272,7 +274,7 @@ MXUser_AcquireExclLock(MXUserExclLock *lock) // IN/OUT: MXUserHisto *histo; #endif - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); MXUserAcquisitionTracking(&lock->header, TRUE); @@ -332,7 +334,7 @@ MXUser_ReleaseExclLock(MXUserExclLock *lock) // IN/OUT: MXUserHisto *histo; #endif - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); #if defined(MXUSER_STATS) value = MXUserReadTimerNS() - lock->holdStart; @@ -391,7 +393,7 @@ MXUser_TryAcquireExclLock(MXUserExclLock *lock) // IN/OUT: uint64 begin; #endif - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); if (MXUserTryAcquireFail(lock->header.lockName)) { return FALSE; @@ -445,7 +447,7 @@ MXUser_TryAcquireExclLock(MXUserExclLock *lock) // IN/OUT: Bool MXUser_IsCurThreadHoldingExclLock(const MXUserExclLock *lock) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); return MXRecLockIsOwner(&lock->recursiveLock); } @@ -475,7 +477,7 @@ MXUser_ControlExclLock(MXUserExclLock *lock, // IN/OUT: { Bool result; - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); switch (command) { #if defined(MXUSER_STATS) @@ -589,7 +591,7 @@ MXUser_CreateSingletonExclLock(Atomic_Ptr *lockStorage, // IN/OUT: MXUserCondVar * MXUser_CreateCondVarExclLock(MXUserExclLock *lock) { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); return MXUserCreateCondVar(&lock->header, &lock->recursiveLock); } @@ -617,7 +619,7 @@ void MXUser_WaitCondVarExclLock(MXUserExclLock *lock, // IN: MXUserCondVar *condVar) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar, MXUSER_WAIT_INFINITE); @@ -648,7 +650,7 @@ MXUser_TimedWaitCondVarExclLock(MXUserExclLock *lock, // IN: MXUserCondVar *condVar, // IN: uint32 msecWait) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE)); return MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar, msecWait); diff --git a/open-vm-tools/lib/lock/ulInt.h b/open-vm-tools/lib/lock/ulInt.h index a1a32cb49..b76395000 100644 --- a/open-vm-tools/lib/lock/ulInt.h +++ b/open-vm-tools/lib/lock/ulInt.h @@ -386,8 +386,6 @@ MXRecLockRelease(MXRecLock *lock) // IN/OUT: * MXUser lock header - all MXUser locks start with this */ -#define USERLOCK_SIGNATURE 0x4B434F4C // 'LOCK' in memory - typedef struct MXUserHeader { uint32 lockSignature; MX_Rank lockRank; diff --git a/open-vm-tools/lib/lock/ulRW.c b/open-vm-tools/lib/lock/ulRW.c index c4d83ae16..83a1f1e60 100644 --- a/open-vm-tools/lib/lock/ulRW.c +++ b/open-vm-tools/lib/lock/ulRW.c @@ -27,6 +27,8 @@ #include "userlock.h" #include "ulInt.h" +#define MXUSER_RW_SIGNATURE 0x57524B4C // 'LKRW' in memory + /* * Environment specific implementations of portable read-write locks. @@ -448,7 +450,7 @@ MXUser_CreateRWLock(const char *userName, // IN: MXUserFreeHashEntry); lock->header.lockName = properName; - lock->header.lockSignature = USERLOCK_SIGNATURE; + lock->header.lockSignature = MXUSER_RW_SIGNATURE; lock->header.lockRank = rank; lock->header.lockDumper = MXUserDumpRWLock; @@ -488,7 +490,7 @@ void MXUser_DestroyRWLock(MXUserRWLock *lock) // IN: { if (LIKELY(lock != NULL)) { - ASSERT(lock->header.lockSignature == USERLOCK_SIGNATURE); + ASSERT(lock->header.lockSignature == MXUSER_RW_SIGNATURE); if (Atomic_Read(&lock->holderCount) != 0) { MXUserDumpAndPanic(&lock->header, @@ -604,7 +606,7 @@ MXUserAcquisition(MXUserRWLock *lock, // IN/OUT: MXUserHisto *histo; #endif - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_RW_SIGNATURE)); MXUserAcquisitionTracking(&lock->header, TRUE); @@ -735,7 +737,7 @@ MXUser_IsCurThreadHoldingRWLock(MXUserRWLock *lock, // IN: { HolderContext *myContext; - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_RW_SIGNATURE)); myContext = MXUserGetHolderContext(lock); @@ -786,7 +788,7 @@ MXUser_ReleaseRWLock(MXUserRWLock *lock) // IN/OUT: MXUserHisto *histo; #endif - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_RW_SIGNATURE)); myContext = MXUserGetHolderContext(lock); diff --git a/open-vm-tools/lib/lock/ulRec.c b/open-vm-tools/lib/lock/ulRec.c index da6bba80e..b25edbf61 100644 --- a/open-vm-tools/lib/lock/ulRec.c +++ b/open-vm-tools/lib/lock/ulRec.c @@ -22,6 +22,8 @@ #include "userlock.h" #include "ulInt.h" +#define MXUSER_REC_SIGNATURE 0x43524B4C // 'LKRC' in memory + struct MXUserRecLock { MXUserHeader header; @@ -205,7 +207,7 @@ MXUser_CreateRecLock(const char *userName, // IN: lock->vmmLock = NULL; lock->header.lockName = properName; - lock->header.lockSignature = USERLOCK_SIGNATURE; + lock->header.lockSignature = MXUSER_REC_SIGNATURE; lock->header.lockRank = rank; lock->header.lockDumper = MXUserDumpRecLock; @@ -246,7 +248,7 @@ void MXUser_DestroyRecLock(MXUserRecLock *lock) // IN: { if (lock != NULL) { - ASSERT(lock->header.lockSignature == USERLOCK_SIGNATURE); + ASSERT(lock->header.lockSignature == MXUSER_REC_SIGNATURE); if (lock->vmmLock == NULL) { if (MXRecLockCount(&lock->recursiveLock) > 0) { @@ -293,7 +295,7 @@ MXUser_DestroyRecLock(MXUserRecLock *lock) // IN: void MXUser_AcquireRecLock(MXUserRecLock *lock) // IN/OUT: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); if (lock->vmmLock) { ASSERT(MXUserMX_LockRec); @@ -353,7 +355,7 @@ MXUser_AcquireRecLock(MXUserRecLock *lock) // IN/OUT: void MXUser_ReleaseRecLock(MXUserRecLock *lock) // IN/OUT: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); if (lock->vmmLock) { ASSERT(MXUserMX_UnlockRec); @@ -416,7 +418,7 @@ MXUser_TryAcquireRecLock(MXUserRecLock *lock) // IN/OUT: { Bool success; - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); if (lock->vmmLock) { ASSERT(MXUserMX_TryLockRec); @@ -473,7 +475,7 @@ Bool MXUser_IsCurThreadHoldingRecLock(const MXUserRecLock *lock) // IN: { Bool result; - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); if (lock->vmmLock) { ASSERT(MXUserMX_IsLockedByCurThreadRec); @@ -510,7 +512,7 @@ MXUser_ControlRecLock(MXUserRecLock *lock, // IN/OUT: { Bool result; - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); ASSERT(lock->vmmLock == NULL); // only unbound locks switch (command) { @@ -625,7 +627,7 @@ MXUser_CreateSingletonRecLock(Atomic_Ptr *lockStorage, // IN/OUT: MXUserCondVar * MXUser_CreateCondVarRecLock(MXUserRecLock *lock) { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); ASSERT(lock->vmmLock == NULL); // only unbound locks return MXUserCreateCondVar(&lock->header, &lock->recursiveLock); @@ -654,7 +656,7 @@ void MXUser_WaitCondVarRecLock(MXUserRecLock *lock, // IN: MXUserCondVar *condVar) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); ASSERT(lock->vmmLock == NULL); // only unbound locks MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar, @@ -686,7 +688,7 @@ MXUser_TimedWaitCondVarRecLock(MXUserRecLock *lock, // IN: MXUserCondVar *condVar, // IN: uint32 msecWait) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); return MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar, msecWait); @@ -712,7 +714,7 @@ MXUser_TimedWaitCondVarRecLock(MXUserRecLock *lock, // IN: struct MX_MutexRec * MXUser_GetRecLockVmm(const MXUserRecLock *lock) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); return lock->vmmLock; } @@ -737,7 +739,7 @@ MXUser_GetRecLockVmm(const MXUserRecLock *lock) // IN: MX_Rank MXUser_GetRecLockRank(const MXUserRecLock *lock) // IN: { - ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE)); + ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE)); return lock->header.lockRank; } @@ -791,7 +793,7 @@ MXUser_BindMXMutexRec(struct MX_MutexRec *mutex, // IN: lock->header.lockName = Str_SafeAsprintf(NULL, "MX_%p", mutex); - lock->header.lockSignature = USERLOCK_SIGNATURE; + lock->header.lockSignature = MXUSER_REC_SIGNATURE; lock->header.lockRank = rank; lock->header.lockDumper = NULL;