Lines Matching refs:task
74 struct task_struct *g, *task; in klp_complete_transition() local
111 for_each_process_thread(g, task) { in klp_complete_transition()
112 WARN_ON_ONCE(test_tsk_thread_flag(task, TIF_PATCH_PENDING)); in klp_complete_transition()
113 task->patch_state = KLP_UNDEFINED; in klp_complete_transition()
118 task = idle_task(cpu); in klp_complete_transition()
119 WARN_ON_ONCE(test_tsk_thread_flag(task, TIF_PATCH_PENDING)); in klp_complete_transition()
120 task->patch_state = KLP_UNDEFINED; in klp_complete_transition()
164 void klp_update_patch_state(struct task_struct *task) in klp_update_patch_state() argument
184 if (test_and_clear_tsk_thread_flag(task, TIF_PATCH_PENDING)) in klp_update_patch_state()
185 task->patch_state = READ_ONCE(klp_target_state); in klp_update_patch_state()
243 static int klp_check_stack(struct task_struct *task, char *err_buf) in klp_check_stack() argument
250 ret = stack_trace_save_tsk_reliable(task, entries, ARRAY_SIZE(entries)); in klp_check_stack()
254 __func__, task->comm, task->pid); in klp_check_stack()
267 __func__, task->comm, task->pid, in klp_check_stack()
282 static bool klp_try_switch_task(struct task_struct *task) in klp_try_switch_task() argument
293 if (task->patch_state == klp_target_state) in klp_try_switch_task()
308 rq = task_rq_lock(task, &flags); in klp_try_switch_task()
310 if (task_running(rq, task) && task != current) { in klp_try_switch_task()
312 "%s: %s:%d is running\n", __func__, task->comm, in klp_try_switch_task()
313 task->pid); in klp_try_switch_task()
317 ret = klp_check_stack(task, err_buf); in klp_try_switch_task()
323 clear_tsk_thread_flag(task, TIF_PATCH_PENDING); in klp_try_switch_task()
324 task->patch_state = klp_target_state; in klp_try_switch_task()
327 task_rq_unlock(rq, task, &flags); in klp_try_switch_task()
346 struct task_struct *g, *task; in klp_send_signals() local
352 for_each_process_thread(g, task) { in klp_send_signals()
353 if (!klp_patch_pending(task)) in klp_send_signals()
362 if (task->flags & PF_KTHREAD) { in klp_send_signals()
367 wake_up_state(task, TASK_INTERRUPTIBLE); in klp_send_signals()
373 set_notify_signal(task); in klp_send_signals()
390 struct task_struct *g, *task; in klp_try_complete_transition() local
406 for_each_process_thread(g, task) in klp_try_complete_transition()
407 if (!klp_try_switch_task(task)) in klp_try_complete_transition()
416 task = idle_task(cpu); in klp_try_complete_transition()
418 if (!klp_try_switch_task(task)) in klp_try_complete_transition()
420 } else if (task->patch_state != klp_target_state) { in klp_try_complete_transition()
422 clear_tsk_thread_flag(task, TIF_PATCH_PENDING); in klp_try_complete_transition()
423 task->patch_state = klp_target_state; in klp_try_complete_transition()
464 struct task_struct *g, *task; in klp_start_transition() local
479 for_each_process_thread(g, task) in klp_start_transition()
480 if (task->patch_state != klp_target_state) in klp_start_transition()
481 set_tsk_thread_flag(task, TIF_PATCH_PENDING); in klp_start_transition()
490 task = idle_task(cpu); in klp_start_transition()
491 if (task->patch_state != klp_target_state) in klp_start_transition()
492 set_tsk_thread_flag(task, TIF_PATCH_PENDING); in klp_start_transition()
505 struct task_struct *g, *task; in klp_init_transition() local
529 for_each_process_thread(g, task) { in klp_init_transition()
530 WARN_ON_ONCE(task->patch_state != KLP_UNDEFINED); in klp_init_transition()
531 task->patch_state = initial_state; in klp_init_transition()
539 task = idle_task(cpu); in klp_init_transition()
540 WARN_ON_ONCE(task->patch_state != KLP_UNDEFINED); in klp_init_transition()
541 task->patch_state = initial_state; in klp_init_transition()
580 struct task_struct *g, *task; in klp_reverse_transition() local
597 for_each_process_thread(g, task) in klp_reverse_transition()
598 clear_tsk_thread_flag(task, TIF_PATCH_PENDING); in klp_reverse_transition()
644 struct task_struct *g, *task; in klp_force_transition() local
650 for_each_process_thread(g, task) in klp_force_transition()
651 klp_update_patch_state(task); in klp_force_transition()