Lines Matching refs:req

48 	struct optee_supp_req *req;  in optee_supp_release()  local
53 idr_for_each_entry(&supp->idr, req, id) { in optee_supp_release()
56 if (IS_ERR(req)) in optee_supp_release()
60 if (req->in_queue) { in optee_supp_release()
61 list_del(&req->link); in optee_supp_release()
62 req->in_queue = false; in optee_supp_release()
65 req->processed = true; in optee_supp_release()
66 req->ret = TEEC_ERROR_COMMUNICATION; in optee_supp_release()
67 complete(&req->c); in optee_supp_release()
91 struct optee_supp_req *req; in optee_supp_thrd_req() local
101 req = kzalloc_obj(*req); in optee_supp_thrd_req()
102 if (!req) in optee_supp_thrd_req()
105 init_completion(&req->c); in optee_supp_thrd_req()
106 req->func = func; in optee_supp_thrd_req()
107 req->num_params = num_params; in optee_supp_thrd_req()
108 req->param = param; in optee_supp_thrd_req()
112 req->id = idr_alloc(&supp->idr, req, 1, 0, GFP_KERNEL); in optee_supp_thrd_req()
113 if (req->id < 0) { in optee_supp_thrd_req()
115 kfree(req); in optee_supp_thrd_req()
119 list_add_tail(&req->link, &supp->reqs); in optee_supp_thrd_req()
120 req->in_queue = true; in optee_supp_thrd_req()
121 req->processed = false; in optee_supp_thrd_req()
134 if (wait_for_completion_killable(&req->c)) { in optee_supp_thrd_req()
136 if (req->in_queue) { in optee_supp_thrd_req()
138 idr_remove(&supp->idr, req->id); in optee_supp_thrd_req()
139 list_del(&req->link); in optee_supp_thrd_req()
140 req->in_queue = false; in optee_supp_thrd_req()
143 } else if (req->processed) { in optee_supp_thrd_req()
150 ret = req->ret; in optee_supp_thrd_req()
158 idr_replace(&supp->idr, INVALID_REQ_PTR, req->id); in optee_supp_thrd_req()
164 ret = req->ret; in optee_supp_thrd_req()
167 kfree(req); in optee_supp_thrd_req()
175 struct optee_supp_req *req; in supp_pop_entry() local
188 req = list_first_entry(&supp->reqs, struct optee_supp_req, link); in supp_pop_entry()
190 if (num_params < req->num_params) { in supp_pop_entry()
195 list_del(&req->link); in supp_pop_entry()
196 req->in_queue = false; in supp_pop_entry()
198 return req; in supp_pop_entry()
251 struct optee_supp_req *req = NULL; in optee_supp_recv() local
261 req = supp_pop_entry(supp, *num_params - num_meta); in optee_supp_recv()
262 if (req) in optee_supp_recv()
280 if (IS_ERR(req)) { in optee_supp_recv()
282 return PTR_ERR(req); in optee_supp_recv()
292 param->u.value.a = req->id; in optee_supp_recv()
296 supp->req_id = req->id; in optee_supp_recv()
299 *func = req->func; in optee_supp_recv()
300 *num_params = req->num_params + num_meta; in optee_supp_recv()
301 memcpy(param + num_meta, req->param, in optee_supp_recv()
302 sizeof(struct tee_param) * req->num_params); in optee_supp_recv()
313 struct optee_supp_req *req; in supp_pop_req() local
332 req = idr_find(&supp->idr, id); in supp_pop_req()
333 if (!req) in supp_pop_req()
337 if (IS_ERR(req)) in supp_pop_req()
340 if ((num_params - nm) != req->num_params) in supp_pop_req()
348 return req; in supp_pop_req()
366 struct optee_supp_req *req; in optee_supp_send() local
371 req = supp_pop_req(supp, num_params, param, &num_meta); in optee_supp_send()
372 if (IS_ERR(req)) { in optee_supp_send()
375 return PTR_ERR(req); in optee_supp_send()
379 for (n = 0; n < req->num_params; n++) { in optee_supp_send()
380 struct tee_param *p = req->param + n; in optee_supp_send()
397 req->ret = ret; in optee_supp_send()
398 req->processed = true; in optee_supp_send()
400 complete(&req->c); in optee_supp_send()