public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] kthread: kill task_get_live_kthread()
@ 2013-03-11 17:36 Oleg Nesterov
  2013-03-11 17:36 ` [PATCH 1/2] kthread: introduce to_live_kthread() Oleg Nesterov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Oleg Nesterov @ 2013-03-11 17:36 UTC (permalink / raw)
  To: Andrew Morton, Thomas Gleixner
  Cc: Namhyung Kim, Paul E. McKenney, Peter Zijlstra, Rusty Russell,
	Srivatsa S. Bhat, linux-kernel

Hello.

Imho, task_get_live_kthread() is very confusing and unneeded.
2a1d4460 copied get_task_struct() + "vfork_done != NULL" from
kthread_stop(), but only kthread_stop() needs them both.

It needs get_task_struct() because kthread_stop() can be used
when the caller doesn't have a reference but we know that this
thread can't exit itself.

At the same time, if it can exit we do not need get_task_struct()
(the caller must have a reference) but we need to ensure we do not
use to_kthread(NULL) if it has exited.

I think that kthread_park/unpark can simply use to_kthread(), but
this series only removes get_task_struct() and keeps "alive" check.



But the actual reason for this cleanup is that I do not understand
why park/unpark abuse kthread.c.

Thomas, can't we move kthread->parked/cpu to smpboot_thread_data
and move all this code into kernel/smpboot.c? Just for example,
why kthread() does __kthread_parkme() ? smpboot_thread_fn() can do
this at the start.

Or this would be wrong/undesirable by some reason?

Oleg.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-03-12 18:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-11 17:36 [PATCH 0/2] kthread: kill task_get_live_kthread() Oleg Nesterov
2013-03-11 17:36 ` [PATCH 1/2] kthread: introduce to_live_kthread() Oleg Nesterov
2013-03-11 17:36 ` [PATCH 2/2] kthread: kill task_get_live_kthread() Oleg Nesterov
2013-03-11 21:15 ` [PATCH 0/2] " Thomas Gleixner
2013-03-12 17:04   ` Oleg Nesterov
2013-03-12 18:18     ` Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox