Commit 6b124879 authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

exit/kthread: Move the exit code for kernel threads into struct kthread



The exit code of kernel threads has different semantics than the
exit_code of userspace tasks.  To avoid confusion and allow
the userspace implementation to change as needed move
the kernel thread exit code into struct kthread.

Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 40966e31
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ struct kthread_create_info
struct kthread {
	unsigned long flags;
	unsigned int cpu;
	int result;
	int (*threadfn)(void *);
	void *data;
	mm_segment_t oldfs;
@@ -287,7 +288,9 @@ EXPORT_SYMBOL_GPL(kthread_parkme);
 */
void __noreturn kthread_exit(long result)
{
	do_exit(result);
	struct kthread *kthread = to_kthread(current);
	kthread->result = result;
	do_exit(0);
}

/**
@@ -679,7 +682,7 @@ int kthread_stop(struct task_struct *k)
	kthread_unpark(k);
	wake_up_process(k);
	wait_for_completion(&kthread->exited);
	ret = k->exit_code;
	ret = kthread->result;
	put_task_struct(k);

	trace_sched_kthread_stop_ret(ret);