Lines Matching refs:t
64 struct task_struct *t; member
174 static notrace bool check_kcov_mode(enum kcov_mode needed_mode, struct task_struct *t) in check_kcov_mode() argument
183 if (!in_task() && !(in_softirq_really() && t->kcov_softirq)) in check_kcov_mode()
185 mode = READ_ONCE(t->kcov_mode); in check_kcov_mode()
211 struct task_struct *t; in __sanitizer_cov_trace_pc() local
216 t = current; in __sanitizer_cov_trace_pc()
217 if (!check_kcov_mode(KCOV_MODE_TRACE_PC, t)) in __sanitizer_cov_trace_pc()
220 area = t->kcov_area; in __sanitizer_cov_trace_pc()
223 if (likely(pos < t->kcov_size)) { in __sanitizer_cov_trace_pc()
241 struct task_struct *t; in write_comp_data() local
245 t = current; in write_comp_data()
246 if (!check_kcov_mode(KCOV_MODE_TRACE_CMP, t)) in write_comp_data()
255 area = (u64 *)t->kcov_area; in write_comp_data()
256 max_pos = t->kcov_size * sizeof(unsigned long); in write_comp_data()
356 static void kcov_start(struct task_struct *t, struct kcov *kcov, in kcov_start() argument
360 kcov_debug("t = %px, size = %u, area = %px\n", t, size, area); in kcov_start()
361 t->kcov = kcov; in kcov_start()
363 t->kcov_size = size; in kcov_start()
364 t->kcov_area = area; in kcov_start()
365 t->kcov_sequence = sequence; in kcov_start()
368 WRITE_ONCE(t->kcov_mode, mode); in kcov_start()
371 static void kcov_stop(struct task_struct *t) in kcov_stop() argument
373 WRITE_ONCE(t->kcov_mode, KCOV_MODE_DISABLED); in kcov_stop()
375 t->kcov = NULL; in kcov_stop()
376 t->kcov_size = 0; in kcov_stop()
377 t->kcov_area = NULL; in kcov_stop()
380 static void kcov_task_reset(struct task_struct *t) in kcov_task_reset() argument
382 kcov_stop(t); in kcov_task_reset()
383 t->kcov_sequence = 0; in kcov_task_reset()
384 t->kcov_handle = 0; in kcov_task_reset()
387 void kcov_task_init(struct task_struct *t) in kcov_task_init() argument
389 kcov_task_reset(t); in kcov_task_init()
390 t->kcov_handle = current->kcov_handle; in kcov_task_init()
395 kcov->t = NULL; in kcov_reset()
421 static void kcov_disable(struct task_struct *t, struct kcov *kcov) in kcov_disable() argument
423 kcov_task_reset(t); in kcov_disable()
444 void kcov_task_exit(struct task_struct *t) in kcov_task_exit() argument
449 kcov = t->kcov; in kcov_task_exit()
454 kcov_debug("t = %px, kcov->t = %px\n", t, kcov->t); in kcov_task_exit()
477 if (WARN_ON(kcov->t != t)) { in kcov_task_exit()
482 kcov_disable(t, kcov); in kcov_task_exit()
588 struct task_struct *t; in kcov_ioctl_locked() local
605 t = current; in kcov_ioctl_locked()
606 if (kcov->t != NULL || t->kcov != NULL) in kcov_ioctl_locked()
613 kcov_start(t, kcov, kcov->size, kcov->area, kcov->mode, in kcov_ioctl_locked()
615 kcov->t = t; in kcov_ioctl_locked()
624 t = current; in kcov_ioctl_locked()
625 if (WARN_ON(kcov->t != t)) in kcov_ioctl_locked()
627 kcov_disable(t, kcov); in kcov_ioctl_locked()
633 t = current; in kcov_ioctl_locked()
634 if (kcov->t != NULL || t->kcov != NULL) in kcov_ioctl_locked()
644 t->kcov = kcov; in kcov_ioctl_locked()
645 t->kcov_mode = KCOV_MODE_REMOTE; in kcov_ioctl_locked()
646 kcov->t = t; in kcov_ioctl_locked()
655 kcov_disable(t, kcov); in kcov_ioctl_locked()
662 kcov_disable(t, kcov); in kcov_ioctl_locked()
671 kcov_disable(t, kcov); in kcov_ioctl_locked()
679 kcov_disable(t, kcov); in kcov_ioctl_locked()
682 t->kcov_handle = remote_arg->common_handle; in kcov_ioctl_locked()
816 static void kcov_remote_softirq_start(struct task_struct *t) in kcov_remote_softirq_start() argument
821 mode = READ_ONCE(t->kcov_mode); in kcov_remote_softirq_start()
825 data->saved_size = t->kcov_size; in kcov_remote_softirq_start()
826 data->saved_area = t->kcov_area; in kcov_remote_softirq_start()
827 data->saved_sequence = t->kcov_sequence; in kcov_remote_softirq_start()
828 data->saved_kcov = t->kcov; in kcov_remote_softirq_start()
829 kcov_stop(t); in kcov_remote_softirq_start()
833 static void kcov_remote_softirq_stop(struct task_struct *t) in kcov_remote_softirq_stop() argument
838 kcov_start(t, data->saved_kcov, data->saved_size, in kcov_remote_softirq_stop()
851 struct task_struct *t = current; in kcov_remote_start() local
871 mode = READ_ONCE(t->kcov_mode); in kcov_remote_start()
881 if (WARN_ON(in_serving_softirq() && t->kcov_softirq)) { in kcov_remote_start()
928 kcov_remote_softirq_start(t); in kcov_remote_start()
929 t->kcov_softirq = 1; in kcov_remote_start()
931 kcov_start(t, kcov, size, area, mode, sequence); in kcov_remote_start()
996 struct task_struct *t = current; in kcov_remote_stop() local
1009 mode = READ_ONCE(t->kcov_mode); in kcov_remote_stop()
1019 if (in_serving_softirq() && !t->kcov_softirq) { in kcov_remote_stop()
1024 if (WARN_ON(!in_serving_softirq() && t->kcov_softirq)) { in kcov_remote_stop()
1029 kcov = t->kcov; in kcov_remote_stop()
1030 area = t->kcov_area; in kcov_remote_stop()
1031 size = t->kcov_size; in kcov_remote_stop()
1032 sequence = t->kcov_sequence; in kcov_remote_stop()
1034 kcov_stop(t); in kcov_remote_stop()
1036 t->kcov_softirq = 0; in kcov_remote_stop()
1037 kcov_remote_softirq_stop(t); in kcov_remote_stop()