soc: qcom: Return correct error code when program_key fails fails

When we call crypto_qti_program_key to program the key, and
it fails due to trustzone busy issue, we try to call invalidate
key method just after that, and in the process, overwrite the
error code returned by the program key failure. Fix this by handling
the errors from both program key and invalidate key separately,
and return the program key error code to caller.

Test: Verified device boot up and reboot.

Change-Id: Iaff0844f68b4886c23e1840d7e0e4a404d38fc96
Signed-off-by: Vaibhav Agrawal <vagrawa@codeaurora.org>
This commit is contained in:
Vaibhav Agrawal 2021-06-30 11:21:25 +05:30 committed by Gerrit - the friendly Code Review server
parent 15adff880f
commit 927d042434

View File

@ -398,7 +398,7 @@ int crypto_qti_keyslot_program(void *priv_data,
unsigned int slot,
u8 data_unit_mask, int capid)
{
int err = 0;
int err1 = 0, err2 = 0;
struct crypto_vops_qti_entry *ice_entry;
ice_entry = (struct crypto_vops_qti_entry *) priv_data;
@ -407,19 +407,19 @@ int crypto_qti_keyslot_program(void *priv_data,
return -EINVAL;
}
err = crypto_qti_program_key(ice_entry, key, slot,
err1 = crypto_qti_program_key(ice_entry, key, slot,
data_unit_mask, capid);
if (err) {
pr_err("%s: program key failed with error %d\n", __func__, err);
err = crypto_qti_invalidate_key(ice_entry, slot);
if (err) {
if (err1) {
pr_err("%s: program key failed with error %d\n",
__func__, err1);
err2 = crypto_qti_invalidate_key(ice_entry, slot);
if (err2) {
pr_err("%s: invalidate key failed with error %d\n",
__func__, err);
return err;
__func__, err2);
}
}
return err;
return err1;
}
int crypto_qti_keyslot_evict(void *priv_data, unsigned int slot)