Resolves 126087. Backed out of slot->keyCount atomic instructions.

This commit is contained in:
kirk.erickson%sun.com 2002-04-14 14:07:12 +00:00
Родитель 27fcb61356
Коммит 9cf5576b32
1 изменённых файлов: 5 добавлений и 8 удалений

Просмотреть файл

@ -165,12 +165,9 @@ pk11_getKeyFromList(PK11SlotInfo *slot) {
if (slot->freeSymKeysHead) {
symKey = slot->freeSymKeysHead;
slot->freeSymKeysHead = symKey->next;
PK11_USE_THREADS(PZ_Unlock(slot->freeListLock);)
PR_AtomicDecrement(&slot->keyCount);
}
else {
PK11_USE_THREADS(PZ_Unlock(slot->freeListLock);)
slot->keyCount--;
}
PK11_USE_THREADS(PZ_Unlock(slot->freeListLock);)
if (symKey) {
symKey->next = NULL;
if ((symKey->series != slot->series) || (!symKey->sessionOwner))
@ -264,15 +261,15 @@ PK11_FreeSymKey(PK11SymKey *symKey)
PORT_Free(symKey->data.data);
}
slot = symKey->slot;
PK11_USE_THREADS(PZ_Lock(slot->freeListLock);)
if (slot->keyCount < slot->maxKeyCount) {
PK11_USE_THREADS(PZ_Lock(slot->freeListLock);)
symKey->next = slot->freeSymKeysHead;
slot->freeSymKeysHead = symKey;
slot->keyCount++;
symKey->slot = NULL;
PK11_USE_THREADS(PZ_Unlock(slot->freeListLock);)
PR_AtomicIncrement(&slot->keyCount);
freeit = PR_FALSE;
}
PK11_USE_THREADS(PZ_Unlock(slot->freeListLock);)
if (freeit) {
pk11_CloseSession(symKey->slot, symKey->session,
symKey->sessionOwner);