summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn M. Schanck <jschanck@mozilla.com>2022-09-09 09:24:39 -0700
committerJohn M. Schanck <jschanck@mozilla.com>2022-09-09 09:24:39 -0700
commit421e8387cdd692fb795b4b8231d75943b746bfe1 (patch)
treee58f5c327c02e5858a75f94f9ee4344625d8d711
parente4d0e1a6cec5de55786780ff1dfdf181c94a1fac (diff)
downloadnss-hg-NSS_3_83_BETA2.tar.gz
Backed out changeset ed04d4729b99NSS_3_83_BETA2
-rw-r--r--lib/softoken/pkcs11.c36
-rw-r--r--lib/softoken/pkcs11u.c8
2 files changed, 12 insertions, 32 deletions
diff --git a/lib/softoken/pkcs11.c b/lib/softoken/pkcs11.c
index aceeaed48..28d219d8e 100644
--- a/lib/softoken/pkcs11.c
+++ b/lib/softoken/pkcs11.c
@@ -2933,7 +2933,7 @@ sftk_CloseAllSessions(SFTKSlot *slot, PRBool logout)
PZLock *lock = SFTK_SESSION_LOCK(slot, i);
do {
SKIP_AFTER_FORK(PZ_Lock(lock));
- session = slot->head ? slot->head[i] : NULL;
+ session = slot->head[i];
/* hand deque */
/* this duplicates function of NSC_close session functions, but
* because we know that we are freeing all the sessions, we can
@@ -3042,25 +3042,10 @@ SFTK_DestroySlotData(SFTKSlot *slot)
}
slot->sessObjHashSize = 0;
- /* slot->head[i] is protected by slot->sessionLock[i], so we need to hold
- * all of the session locks before we free slot->head[]. Note that as a
- * consequence of this locking structure, one must always check that
- * slot->head != NULL after acquiring a session lock.
- */
- for (i = 0; i < slot->numSessionLocks; i++) {
- if (slot->sessionLock && slot->sessionLock[i]) {
- PZ_Lock(slot->sessionLock[i]);
- }
- }
if (slot->head) {
PORT_Free(slot->head);
slot->head = NULL;
}
- for (i = 0; i < slot->numSessionLocks; i++) {
- if (slot->sessionLock && slot->sessionLock[i]) {
- PZ_Unlock(slot->sessionLock[i]);
- }
- }
slot->sessHashSize = 0;
/* OK everything has been disassembled, now we can finally get rid
@@ -4218,16 +4203,13 @@ NSC_OpenSession(CK_SLOT_ID slotID, CK_FLAGS flags,
} while (sessionID == CK_INVALID_HANDLE);
lock = SFTK_SESSION_LOCK(slot, sessionID);
PZ_Lock(lock);
- sameID = NULL;
- if (slot->head) {
- sftkqueue_find(sameID, sessionID, slot->head, slot->sessHashSize);
- if (sameID == NULL) {
- session->handle = sessionID;
- sftk_update_state(slot, session);
- sftkqueue_add(session, sessionID, slot->head, slot->sessHashSize);
- } else {
- slot->sessionIDConflict++; /* for debugging */
- }
+ sftkqueue_find(sameID, sessionID, slot->head, slot->sessHashSize);
+ if (sameID == NULL) {
+ session->handle = sessionID;
+ sftk_update_state(slot, session);
+ sftkqueue_add(session, sessionID, slot->head, slot->sessHashSize);
+ } else {
+ slot->sessionIDConflict++; /* for debugging */
}
PZ_Unlock(lock);
} while (sameID != NULL);
@@ -4256,7 +4238,7 @@ NSC_CloseSession(CK_SESSION_HANDLE hSession)
/* lock */
lock = SFTK_SESSION_LOCK(slot, hSession);
PZ_Lock(lock);
- if (slot->head && sftkqueue_is_queued(session, hSession, slot->head, slot->sessHashSize)) {
+ if (sftkqueue_is_queued(session, hSession, slot->head, slot->sessHashSize)) {
sessionFound = PR_TRUE;
sftkqueue_delete(session, hSession, slot->head, slot->sessHashSize);
}
diff --git a/lib/softoken/pkcs11u.c b/lib/softoken/pkcs11u.c
index 6c8fc723a..5299a700a 100644
--- a/lib/softoken/pkcs11u.c
+++ b/lib/softoken/pkcs11u.c
@@ -1852,7 +1852,7 @@ sftk_update_all_states(SFTKSlot *slot)
for (i = 0; i < slot->sessHashSize; i++) {
PZLock *lock = SFTK_SESSION_LOCK(slot, i);
PZ_Lock(lock);
- for (session = (slot->head ? slot->head[i] : NULL); session; session = session->next) {
+ for (session = slot->head[i]; session; session = session->next) {
sftk_update_state(slot, session);
}
PZ_Unlock(lock);
@@ -1982,7 +1982,7 @@ SFTKSession *
sftk_SessionFromHandle(CK_SESSION_HANDLE handle)
{
SFTKSlot *slot = sftk_SlotFromSessionHandle(handle);
- SFTKSession *session = NULL;
+ SFTKSession *session;
PZLock *lock;
if (!slot)
@@ -1990,9 +1990,7 @@ sftk_SessionFromHandle(CK_SESSION_HANDLE handle)
lock = SFTK_SESSION_LOCK(slot, handle);
PZ_Lock(lock);
- if (slot->head) {
- sftkqueue_find(session, handle, slot->head, slot->sessHashSize);
- }
+ sftkqueue_find(session, handle, slot->head, slot->sessHashSize);
PZ_Unlock(lock);
return (session);