Re: [PATCH] RFC: siox: don't create a thread without starting it

From: Uwe Kleine-König
Date: Thu Jun 28 2018 - 04:04:13 EST


Hello Peter,

On Tue, Jun 26, 2018 at 09:38:41AM +0200, Peter Zijlstra wrote:
> On Mon, Jun 25, 2018 at 09:21:21PM +0200, Uwe Kleine-König wrote:
> > > I don't think so, that patch has an issue with INTERRUPTIBLE, but IDLE
> > > very much doesn't allow signals like INTERRUPTIBLE does.
> >
> > I don't think I can provide a good commit log for
> > s/TASK_UNINTERRUPTIBLE/TASK_IDLE/ in kernel/kthread.c:kthread(). But I
> > can confirm that this patch makes the warning go away, so if you want to
> > address this, you can add my Tested-by:.
>
> Yeah, it's also a little bit more involved, I'd also have to change all
> the kthread_bind() code and audit all kthread users to see if anybody
> else actually relies on TASK_UNINTERRUPTIBLE.
>
> So I think I'll leave it as is for now, maybe another day ... :-)

Should we add a reminder to kthread() à la:

--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -227,7 +227,14 @@ static int kthread(void *_create)
init_completion(&self->parked);
current->vfork_done = &self->exited;

- /* OK, tell user we're spawned, wait for stop or wakeup */
+ /*
+ * OK, tell user we're spawned, wait for stop or wakeup.
+ * It might be possible to use TASK_IDLE here to not trigger the
+ * hung-task-check if the creator doesn't run the thread immediately.
+ * Changing this would however need some research first as this has an
+ * effect on e.g. kthread_bind() or the caller might rely on
+ * TASK_UNINTERRUPTIBLE.
+ */
__set_current_state(TASK_UNINTERRUPTIBLE);
create->result = current;
complete(done);

?

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |