2009-01-19 17:36:19

by Vitaliy Gusev

[permalink] [raw]
Subject: [PATCH] kthread: Don't looking for a task in create_kthread()

Let a process fill result, as 'current' is the same
in all pid namespaces.

Signed-off-by: Vitaliy Gusev <[email protected]>

---
kernel/kthread.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/kernel/kthread.c b/kernel/kthread.c
index 4fbc456..fd765f9 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -76,6 +76,7 @@ static int kthread(void *_create)

/* OK, tell user we're spawned, wait for stop or wakeup */
__set_current_state(TASK_UNINTERRUPTIBLE);
+ create->result = current;
complete(&create->started);
schedule();

@@ -101,9 +102,6 @@ static void create_kthread(struct kthread_create_info *create)
} else {
struct sched_param param = { .sched_priority = 0 };
wait_for_completion(&create->started);
- read_lock(&tasklist_lock);
- create->result = find_task_by_pid_ns(pid, &init_pid_ns);
- read_unlock(&tasklist_lock);
/*
* root may have changed our (kthreadd's) priority or CPU mask.
* The kernel thread should not inherit these properties.


2009-01-19 19:06:21

by Oleg Nesterov

[permalink] [raw]
Subject: Re: [PATCH] kthread: Don't looking for a task in create_kthread()

On 01/19, Vitaliy Gusev wrote:
>
> Let a process fill result, as 'current' is the same
> in all pid namespaces.

This looks like a very nice patch to me.

But I don't understand the changelog. Afaics, this has nothing to do
with namespaces. We can remove the unnecessary find_task_by_pid_ns()
kthread() can just use "current" to get the same result.

Could you please improve the changelog and re-send?

Oleg.