]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
lib/lock: give each lock type a unique signature
authorVMware, Inc <>
Thu, 17 Jun 2010 21:29:23 +0000 (14:29 -0700)
committerMarcelo Vanzin <mvanzin@vmware.com>
Thu, 17 Jun 2010 21:29:23 +0000 (14:29 -0700)
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 <mvanzin@vmware.com>
open-vm-tools/lib/lock/ulExcl.c
open-vm-tools/lib/lock/ulInt.h
open-vm-tools/lib/lock/ulRW.c
open-vm-tools/lib/lock/ulRec.c

index 273098ee4202a4ccb7cce14ec69744571658d7b4..7bc975c04fcb6ee23256f169d24cf4649c52b944 100644 (file)
@@ -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);
index a1a32cb4926b78442418fda1986945d14af3d9e3..b763950001e8f0408c5e082082b68029458b85ec 100644 (file)
@@ -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;
index c4d83ae166e240e5844a60bef32e27cddc8ed3c3..83a1f1e60923735319efb7c2e6eb8d9f6408d784 100644 (file)
@@ -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);
 
index da6bba80e31bae96c7d3d07d0b769546eb4fdcef..b25edbf61dec82d2b50912a062711e0120bce995 100644 (file)
@@ -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;