hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/tee/amdtee/call.c
....@@ -423,19 +423,23 @@
423423 if (ret) {
424424 arg->ret_origin = TEEC_ORIGIN_COMMS;
425425 arg->ret = TEEC_ERROR_COMMUNICATION;
426
- } else if (arg->ret == TEEC_SUCCESS) {
427
- ret = get_ta_refcount(load_cmd.ta_handle);
428
- if (!ret) {
429
- arg->ret_origin = TEEC_ORIGIN_COMMS;
430
- arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
426
+ } else {
427
+ arg->ret_origin = load_cmd.return_origin;
431428
432
- /* Unload the TA on error */
433
- unload_cmd.ta_handle = load_cmd.ta_handle;
434
- psp_tee_process_cmd(TEE_CMD_ID_UNLOAD_TA,
435
- (void *)&unload_cmd,
436
- sizeof(unload_cmd), &ret);
437
- } else {
438
- set_session_id(load_cmd.ta_handle, 0, &arg->session);
429
+ if (arg->ret == TEEC_SUCCESS) {
430
+ ret = get_ta_refcount(load_cmd.ta_handle);
431
+ if (!ret) {
432
+ arg->ret_origin = TEEC_ORIGIN_COMMS;
433
+ arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
434
+
435
+ /* Unload the TA on error */
436
+ unload_cmd.ta_handle = load_cmd.ta_handle;
437
+ psp_tee_process_cmd(TEE_CMD_ID_UNLOAD_TA,
438
+ (void *)&unload_cmd,
439
+ sizeof(unload_cmd), &ret);
440
+ } else {
441
+ set_session_id(load_cmd.ta_handle, 0, &arg->session);
442
+ }
439443 }
440444 }
441445 mutex_unlock(&ta_refcount_mutex);