Index: cackey.c ================================================================== --- cackey.c +++ cackey.c @@ -5207,17 +5207,10 @@ cackey_mutex_unlock(cackey_biglock); return(CKR_TOKEN_NOT_PRESENT); } - mutex_retval = cackey_mutex_unlock(cackey_biglock); - if (mutex_retval != 0) { - CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); - - return(CKR_GENERAL_ERROR); - } - /* Determine token label from certificates */ memset(pInfo->label, ' ', sizeof(pInfo->label)); use_default_label = 1; if (cackey_slots[slotID].label == NULL) { @@ -5239,10 +5232,17 @@ } else { memcpy(pInfo->label, cackey_slots[slotID].label, sizeof(pInfo->label)); use_default_label = 0; } + + mutex_retval = cackey_mutex_unlock(cackey_biglock); + if (mutex_retval != 0) { + CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); + + return(CKR_GENERAL_ERROR); + } if (use_default_label) { memcpy(pInfo->label, defaultLabel, sizeof(defaultLabel) - 1); }