From: VMware, Inc <> Date: Mon, 21 Nov 2011 23:41:11 +0000 (-0800) Subject: Revert a previous change. X-Git-Tag: 2011.11.20-535097~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=38ce337202b17b5a13e4842e4acd62aa2f29aef2;p=thirdparty%2Fopen-vm-tools.git Revert a previous change. Signed-off-by: Marcelo Vanzin --- diff --git a/open-vm-tools/lib/lock/ul.c b/open-vm-tools/lib/lock/ul.c index 2bedd7575..607368172 100644 --- a/open-vm-tools/lib/lock/ul.c +++ b/open-vm-tools/lib/lock/ul.c @@ -23,7 +23,6 @@ #include "ulInt.h" #include "ulIntShared.h" #include "hashTable.h" -#include "random.h" static Bool mxInPanic = FALSE; // track when involved in a panic @@ -86,89 +85,6 @@ MXUserInternalSingleton(Atomic_Ptr *storage) // IN: } -/* - *----------------------------------------------------------------------------- - * - * MXUserSydrome -- - * - * Generate the syndrome bits for this MXUser library. - * - * Each MXUser library has unique syndrome bits enabling the run time - * detection of locks created with one copy of the MXUser library and - * passed to another copy of the MXUser library. - * - * The syndrome bits are important as they prevent incompatible versions - * of the MXUser library from trashing each other. - * - * The bits are generated by using a source of bits that is external to - * a program and its libraries. This way no code or data based scheme - * can be spoofed or aliased. - * - * Results: - * As above - * - * Side effects: - * None - * - *----------------------------------------------------------------------------- - */ - -static uint32 -MXUserSyndrome(void) -{ - uint32 syndrome; - static Atomic_uint32 syndromeMem; // implicitly zero -- mbellon - - syndrome = Atomic_Read(&syndromeMem); - - if (syndrome == 0) { - while (Random_Crypto(sizeof syndrome, &syndrome) && (syndrome == 0)) - ; - - if (syndrome == 0) { - syndrome++; // Fudge in case of failure - } - - /* blind write; if racing one thread or the other will do */ - Atomic_ReadIfEqualWrite(&syndromeMem, 0, syndrome); - - syndrome = Atomic_Read(&syndromeMem); - ASSERT(syndrome); - } - - return syndrome; -} - - -/* - *----------------------------------------------------------------------------- - * - * MXUserGetSignature -- - * - * Return a signature appropriate for the specified object type. - * - * Results: - * As above - * - * Side effects: - * None - * - *----------------------------------------------------------------------------- - */ - -uint32 -MXUserGetSignature(uint32 objectType) // IN: -{ - uint32 signature; - - ASSERT(objectType < 16); // 4 bits of object type - - signature = (MXUserSyndrome() & 0x0FFFFFFF) | (objectType << 28); - ASSERT(signature); - - return signature; -} - #if defined(MXUSER_DEBUG) #define MXUSER_MAX_LOCKS_PER_THREAD (2 * MXUSER_MAX_REC_DEPTH) @@ -564,13 +480,11 @@ MXUser_TryAcquireFailureControl(Bool (*func)(const char *name)) // IN: void MXUserValidateHeader(MXUserHeader *header, // IN: - uint32 objectType) // IN: + uint32 objectID) // IN: { - uint32 expected = MXUserGetSignature(objectType); - - if (header->signature != expected) { + if (header->signature != objectID) { MXUserDumpAndPanic(header, "%s: expected %X observed %X\n", __FUNCTION__, - expected, header->signature); + objectID, header->signature); } } #endif diff --git a/open-vm-tools/lib/lock/ulBarrier.c b/open-vm-tools/lib/lock/ulBarrier.c index 9455224ac..2b427b543 100644 --- a/open-vm-tools/lib/lock/ulBarrier.c +++ b/open-vm-tools/lib/lock/ulBarrier.c @@ -154,7 +154,7 @@ MXUser_CreateBarrier(const char *userName, // IN: shall be known as barrier->configCount = count; barrier->curContext = 0; - barrier->header.signature = MXUserGetSignature(MXUSER_TYPE_BARRIER); + barrier->header.signature = MXUSER_TYPE_BARRIER; barrier->header.name = properName; barrier->header.rank = rank; barrier->header.serialNumber = MXUserAllocSerialNumber(); diff --git a/open-vm-tools/lib/lock/ulExcl.c b/open-vm-tools/lib/lock/ulExcl.c index 7a504a6f7..06d155d23 100644 --- a/open-vm-tools/lib/lock/ulExcl.c +++ b/open-vm-tools/lib/lock/ulExcl.c @@ -301,7 +301,7 @@ MXUser_CreateExclLock(const char *userName, // IN: return NULL; } - lock->header.signature = MXUserGetSignature(MXUSER_TYPE_EXCL); + lock->header.signature = MXUSER_TYPE_EXCL; lock->header.name = properName; lock->header.rank = rank; lock->header.serialNumber = MXUserAllocSerialNumber(); diff --git a/open-vm-tools/lib/lock/ulInt.h b/open-vm-tools/lib/lock/ulInt.h index 61fa6e88b..063542719 100644 --- a/open-vm-tools/lib/lock/ulInt.h +++ b/open-vm-tools/lib/lock/ulInt.h @@ -391,17 +391,13 @@ MXUserGetThreadID(void) return (void *) (uintptr_t) VThread_CurID(); // unsigned } -/* - * MXUser object type ID value. They must never be zero! - */ - -#define MXUSER_TYPE_RW 0x1 -#define MXUSER_TYPE_REC 0x2 -#define MXUSER_TYPE_RANK 0x3 -#define MXUSER_TYPE_EXCL 0x4 -#define MXUSER_TYPE_SEMA 0x5 -#define MXUSER_TYPE_CONDVAR 0x6 -#define MXUSER_TYPE_BARRIER 0x7 +#define MXUSER_TYPE_RW 0x57524B4C // 'LKRW' in memory +#define MXUSER_TYPE_REC 0x43524B4C // 'LKRC' in memory +#define MXUSER_TYPE_RANK 0x4E4B5241 // 'RANK' in memory +#define MXUSER_TYPE_EXCL 0x58454B4C // 'LKEX' in memory +#define MXUSER_TYPE_SEMA 0x414D4553 // 'SEMA' in memory +#define MXUSER_TYPE_CONDVAR 0x444E4F43 // 'COND' in memory +#define MXUSER_TYPE_BARRIER 0x52524142 // 'BARR' in memory /* * MXUser header - all MXUser objects start with this @@ -428,8 +424,6 @@ void MXUserDumpAndPanic(MXUserHeader *header, MXRecLock *MXUserInternalSingleton(Atomic_Ptr *storage); -uint32 MXUserGetSignature(uint32 objectType); - #if defined(MXUSER_DEBUG) void MXUserAcquisitionTracking(MXUserHeader *header, Bool checkRank); @@ -437,7 +431,7 @@ void MXUserAcquisitionTracking(MXUserHeader *header, void MXUserReleaseTracking(MXUserHeader *header); void MXUserValidateHeader(MXUserHeader *header, - uint32 objectType); + uint32 objectID); #else static INLINE void MXUserAcquisitionTracking(MXUserHeader *header, // IN: @@ -454,7 +448,7 @@ MXUserReleaseTracking(MXUserHeader *header) // IN: static INLINE void MXUserValidateHeader(MXUserHeader *header, // IN: - uint32 objectType) // IN: + uint32 objectID) // IN: { return; } diff --git a/open-vm-tools/lib/lock/ulRW.c b/open-vm-tools/lib/lock/ulRW.c index 8d0471a3a..3d21b1f18 100644 --- a/open-vm-tools/lib/lock/ulRW.c +++ b/open-vm-tools/lib/lock/ulRW.c @@ -529,7 +529,7 @@ MXUser_CreateRWLock(const char *userName, // IN: properName = Util_SafeStrdup(userName); } - lock->header.signature = MXUserGetSignature(MXUSER_TYPE_RW); + lock->header.signature = MXUSER_TYPE_RW; lock->header.name = properName; lock->header.rank = rank; lock->header.serialNumber = MXUserAllocSerialNumber(); diff --git a/open-vm-tools/lib/lock/ulRec.c b/open-vm-tools/lib/lock/ulRec.c index b01f33a0c..ff5e75805 100644 --- a/open-vm-tools/lib/lock/ulRec.c +++ b/open-vm-tools/lib/lock/ulRec.c @@ -333,7 +333,7 @@ MXUserCreateRecLock(const char *userName, // IN: lock->vmmLock = NULL; Atomic_Write(&lock->refCount, 1); - lock->header.signature = MXUserGetSignature(MXUSER_TYPE_REC); + lock->header.signature = MXUSER_TYPE_REC; lock->header.name = properName; lock->header.rank = rank; lock->header.serialNumber = MXUserAllocSerialNumber(); @@ -1014,7 +1014,7 @@ MXUser_BindMXMutexRec(struct MX_MutexRec *mutex, // IN: lock = Util_SafeCalloc(1, sizeof(*lock)); - lock->header.signature = MXUserGetSignature(MXUSER_TYPE_REC); + lock->header.signature = MXUSER_TYPE_REC; lock->header.name = Str_SafeAsprintf(NULL, "MX_%p", mutex); lock->header.rank = rank; lock->header.serialNumber = MXUserAllocSerialNumber(); diff --git a/open-vm-tools/lib/lock/ulSema.c b/open-vm-tools/lib/lock/ulSema.c index c84f0cea4..f1f4a2547 100644 --- a/open-vm-tools/lib/lock/ulSema.c +++ b/open-vm-tools/lib/lock/ulSema.c @@ -514,7 +514,7 @@ MXUser_CreateSemaphore(const char *userName, // IN: if (LIKELY(MXUserInit(&sema->nativeSemaphore) == 0)) { MXUserStats *stats; - sema->header.signature = MXUserGetSignature(MXUSER_TYPE_SEMA); + sema->header.signature = MXUSER_TYPE_SEMA; sema->header.name = properName; sema->header.rank = rank; sema->header.serialNumber = MXUserAllocSerialNumber();