Loading drivers/soc/qcom/smcinvoke.c +12 −0 Original line number Original line Diff line number Diff line Loading @@ -1238,6 +1238,9 @@ static int marshal_out_tzcb_req(const struct smcinvoke_accept *user_req, int32_t tzhandles_to_release[OBJECT_COUNTS_MAX_OO] = {0}; int32_t tzhandles_to_release[OBJECT_COUNTS_MAX_OO] = {0}; struct smcinvoke_tzcb_req *tzcb_req = cb_txn->cb_req; struct smcinvoke_tzcb_req *tzcb_req = cb_txn->cb_req; union smcinvoke_tz_args *tz_args = tzcb_req->args; union smcinvoke_tz_args *tz_args = tzcb_req->args; put_pending_cbobj_locked( TZHANDLE_GET_SERVER(cb_txn->cb_req->hdr.tzhandle), TZHANDLE_GET_OBJID(cb_txn->cb_req->hdr.tzhandle)); tzcb_req->result = user_req->result; tzcb_req->result = user_req->result; FOR_ARGS(i, tzcb_req->hdr.counts, BO) { FOR_ARGS(i, tzcb_req->hdr.counts, BO) { Loading Loading @@ -1274,6 +1277,13 @@ static int marshal_out_tzcb_req(const struct smcinvoke_accept *user_req, goto out; goto out; tzhandles_to_release[i] = tz_args[i].handle; tzhandles_to_release[i] = tz_args[i].handle; } } FOR_ARGS(i, tzcb_req->hdr.counts, OI) { if (TZHANDLE_IS_CB_OBJ(tz_args[i].handle)) { put_pending_cbobj_locked( TZHANDLE_GET_SERVER(tz_args[i].handle), TZHANDLE_GET_OBJID(tz_args[i].handle)); } } ret = 0; ret = 0; out: out: if (ret) if (ret) Loading Loading @@ -1700,6 +1710,8 @@ static int smcinvoke_release(struct inode *nodp, struct file *filp) ret = prepare_send_scm_msg(in_buf, SMCINVOKE_TZ_MIN_BUF_SIZE, out_buf, ret = prepare_send_scm_msg(in_buf, SMCINVOKE_TZ_MIN_BUF_SIZE, out_buf, SMCINVOKE_TZ_MIN_BUF_SIZE, &req, NULL, &release_handles); SMCINVOKE_TZ_MIN_BUF_SIZE, &req, NULL, &release_handles); process_piggyback_data(out_buf, SMCINVOKE_TZ_MIN_BUF_SIZE); out: out: kfree(filp->private_data); kfree(filp->private_data); free_page((long)in_buf); free_page((long)in_buf); Loading Loading
drivers/soc/qcom/smcinvoke.c +12 −0 Original line number Original line Diff line number Diff line Loading @@ -1238,6 +1238,9 @@ static int marshal_out_tzcb_req(const struct smcinvoke_accept *user_req, int32_t tzhandles_to_release[OBJECT_COUNTS_MAX_OO] = {0}; int32_t tzhandles_to_release[OBJECT_COUNTS_MAX_OO] = {0}; struct smcinvoke_tzcb_req *tzcb_req = cb_txn->cb_req; struct smcinvoke_tzcb_req *tzcb_req = cb_txn->cb_req; union smcinvoke_tz_args *tz_args = tzcb_req->args; union smcinvoke_tz_args *tz_args = tzcb_req->args; put_pending_cbobj_locked( TZHANDLE_GET_SERVER(cb_txn->cb_req->hdr.tzhandle), TZHANDLE_GET_OBJID(cb_txn->cb_req->hdr.tzhandle)); tzcb_req->result = user_req->result; tzcb_req->result = user_req->result; FOR_ARGS(i, tzcb_req->hdr.counts, BO) { FOR_ARGS(i, tzcb_req->hdr.counts, BO) { Loading Loading @@ -1274,6 +1277,13 @@ static int marshal_out_tzcb_req(const struct smcinvoke_accept *user_req, goto out; goto out; tzhandles_to_release[i] = tz_args[i].handle; tzhandles_to_release[i] = tz_args[i].handle; } } FOR_ARGS(i, tzcb_req->hdr.counts, OI) { if (TZHANDLE_IS_CB_OBJ(tz_args[i].handle)) { put_pending_cbobj_locked( TZHANDLE_GET_SERVER(tz_args[i].handle), TZHANDLE_GET_OBJID(tz_args[i].handle)); } } ret = 0; ret = 0; out: out: if (ret) if (ret) Loading Loading @@ -1700,6 +1710,8 @@ static int smcinvoke_release(struct inode *nodp, struct file *filp) ret = prepare_send_scm_msg(in_buf, SMCINVOKE_TZ_MIN_BUF_SIZE, out_buf, ret = prepare_send_scm_msg(in_buf, SMCINVOKE_TZ_MIN_BUF_SIZE, out_buf, SMCINVOKE_TZ_MIN_BUF_SIZE, &req, NULL, &release_handles); SMCINVOKE_TZ_MIN_BUF_SIZE, &req, NULL, &release_handles); process_piggyback_data(out_buf, SMCINVOKE_TZ_MIN_BUF_SIZE); out: out: kfree(filp->private_data); kfree(filp->private_data); free_page((long)in_buf); free_page((long)in_buf); Loading