Lines Matching refs:t

30 static struct rseq *rseq_kernel_fields(struct task_struct *t)  in rseq_kernel_fields()  argument
32 return (struct rseq *) t->rseq_fields; in rseq_kernel_fields()
35 static int rseq_validate_ro_fields(struct task_struct *t) in rseq_validate_ro_fields() argument
41 struct rseq __user *rseq = t->rseq; in rseq_validate_ro_fields()
47 if (!user_read_access_begin(rseq, t->rseq_len)) in rseq_validate_ro_fields()
55 if ((cpu_id_start != rseq_kernel_fields(t)->cpu_id_start || in rseq_validate_ro_fields()
56 cpu_id != rseq_kernel_fields(t)->cpu_id || in rseq_validate_ro_fields()
57 node_id != rseq_kernel_fields(t)->node_id || in rseq_validate_ro_fields()
58 mm_cid != rseq_kernel_fields(t)->mm_cid) && __ratelimit(&_rs)) { in rseq_validate_ro_fields()
65 t->pid, t->comm, in rseq_validate_ro_fields()
66 cpu_id_start, rseq_kernel_fields(t)->cpu_id_start, in rseq_validate_ro_fields()
67 cpu_id, rseq_kernel_fields(t)->cpu_id, in rseq_validate_ro_fields()
68 node_id, rseq_kernel_fields(t)->node_id, in rseq_validate_ro_fields()
69 mm_cid, rseq_kernel_fields(t)->mm_cid); in rseq_validate_ro_fields()
85 #define rseq_unsafe_put_user(t, value, field, error_label) \ argument
87 unsafe_put_user(value, &t->rseq->field, error_label); \
88 rseq_kernel_fields(t)->field = value; \
92 static int rseq_validate_ro_fields(struct task_struct *t) in rseq_validate_ro_fields() argument
97 #define rseq_unsafe_put_user(t, value, field, error_label) \ argument
98 unsafe_put_user(value, &t->rseq->field, error_label)
161 static int rseq_update_cpu_node_id(struct task_struct *t) in rseq_update_cpu_node_id() argument
163 struct rseq __user *rseq = t->rseq; in rseq_update_cpu_node_id()
166 u32 mm_cid = task_mm_cid(t); in rseq_update_cpu_node_id()
171 if (rseq_validate_ro_fields(t)) in rseq_update_cpu_node_id()
174 if (!user_write_access_begin(rseq, t->rseq_len)) in rseq_update_cpu_node_id()
177 rseq_unsafe_put_user(t, cpu_id, cpu_id_start, efault_end); in rseq_update_cpu_node_id()
178 rseq_unsafe_put_user(t, cpu_id, cpu_id, efault_end); in rseq_update_cpu_node_id()
179 rseq_unsafe_put_user(t, node_id, node_id, efault_end); in rseq_update_cpu_node_id()
180 rseq_unsafe_put_user(t, mm_cid, mm_cid, efault_end); in rseq_update_cpu_node_id()
188 trace_rseq_update(t); in rseq_update_cpu_node_id()
197 static int rseq_reset_rseq_cpu_node_id(struct task_struct *t) in rseq_reset_rseq_cpu_node_id() argument
199 struct rseq __user *rseq = t->rseq; in rseq_reset_rseq_cpu_node_id()
206 if (rseq_validate_ro_fields(t)) in rseq_reset_rseq_cpu_node_id()
209 if (!user_write_access_begin(rseq, t->rseq_len)) in rseq_reset_rseq_cpu_node_id()
220 rseq_unsafe_put_user(t, cpu_id_start, cpu_id_start, efault_end); in rseq_reset_rseq_cpu_node_id()
221 rseq_unsafe_put_user(t, cpu_id, cpu_id, efault_end); in rseq_reset_rseq_cpu_node_id()
222 rseq_unsafe_put_user(t, node_id, node_id, efault_end); in rseq_reset_rseq_cpu_node_id()
223 rseq_unsafe_put_user(t, mm_cid, mm_cid, efault_end); in rseq_reset_rseq_cpu_node_id()
262 static int rseq_get_rseq_cs(struct task_struct *t, struct rseq_cs *rseq_cs) in rseq_get_rseq_cs() argument
270 ret = rseq_get_rseq_cs_ptr_val(t->rseq, &ptr); in rseq_get_rseq_cs()
327 static int rseq_need_restart(struct task_struct *t, u32 cs_flags) in rseq_need_restart() argument
336 ret = get_user(flags, &t->rseq->flags); in rseq_need_restart()
348 event_mask = t->rseq_event_mask; in rseq_need_restart()
349 t->rseq_event_mask = 0; in rseq_need_restart()
386 struct task_struct *t = current; in rseq_ip_fixup() local
390 ret = rseq_get_rseq_cs(t, &rseq_cs); in rseq_ip_fixup()
400 return clear_rseq_cs(t->rseq); in rseq_ip_fixup()
401 ret = rseq_need_restart(t, rseq_cs.flags); in rseq_ip_fixup()
404 ret = clear_rseq_cs(t->rseq); in rseq_ip_fixup()
426 struct task_struct *t = current; in __rseq_handle_notify_resume() local
429 if (unlikely(t->flags & PF_EXITING)) in __rseq_handle_notify_resume()
442 if (unlikely(rseq_update_cpu_node_id(t))) in __rseq_handle_notify_resume()
460 struct task_struct *t = current; in rseq_syscall() local
463 if (!t->rseq) in rseq_syscall()
465 if (rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs)) in rseq_syscall()