diff --git a/src/pkcs11/pkcs11-global.c b/src/pkcs11/pkcs11-global.c index 9af60e34..11a49ac4 100644 --- a/src/pkcs11/pkcs11-global.c +++ b/src/pkcs11/pkcs11-global.c @@ -316,7 +316,6 @@ CK_RV C_Finalize(CK_VOID_PTR pReserved) while ((slot = list_fetch(&virtual_slots))) { list_destroy(&slot->objects); - pop_all_login_states(slot); list_destroy(&slot->logins); free(slot); } diff --git a/src/pkcs11/slot.c b/src/pkcs11/slot.c index b56590cb..45be6d41 100644 --- a/src/pkcs11/slot.c +++ b/src/pkcs11/slot.c @@ -449,6 +449,7 @@ CK_RV slot_token_removed(CK_SLOT_ID id) /* Reset relevant slot properties */ slot->slot_info.flags &= ~CKF_TOKEN_PRESENT; slot->login_user = -1; + pop_all_login_states(slot); slot->p11card = NULL; if (token_was_present)