From: Ingo Molnar <mingo@elte.hu>
To: Oleg Nesterov <oleg@redhat.com>
Cc: arjan@infradead.org, jeremy@goop.org, mschmidt@redhat.com,
mingo@redhat.com, hpa@zytor.com, linux-kernel@vger.kernel.org,
tj@kernel.org, tglx@linutronix.de,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-tip-commits@vger.kernel.org
Subject: Re: [PATCH] kthreads: Fix startup synchronization boot crash
Date: Tue, 1 Sep 2009 15:14:40 +0200 [thread overview]
Message-ID: <20090901131440.GA29783@elte.hu> (raw)
In-Reply-To: <20090901130436.GA22514@redhat.com>
* Oleg Nesterov <oleg@redhat.com> wrote:
> On 09/01, Ingo Molnar wrote:
> >
> > In fact i dont see any proper serialization here: there appears to
> > be a race between the initial task and the init task (which are not
> > one and the same). The race is possibly timing dependent as well,
> > hence the (in hindsight, false) dependency on the stackprotector
> > commit.
>
> Yes, this looks racy, and I think this was always racy.
>
> > I think the bug was introduced
> > via:
> >
> > cdd140b: kthreads: simplify the startup synchronization
>
> Cough ;) No, I don't think this patch introduced this bug. With or
> without this patch, kthread_create() assumes kthreadd_task !=
> NULL, otherwise wake_up_process(kthreadd_task) is obviously can
> crash.
yeah - was just a guess.
> > static DEFINE_SPINLOCK(kthread_create_lock);
> > static LIST_HEAD(kthread_create_list);
> > +
> > struct task_struct *kthreadd_task;
> > +DECLARE_COMPLETION(kthreadd_task_init_done);
> >
> > struct kthread_create_info
> > {
> > @@ -129,6 +131,9 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
> > list_add_tail(&create.list, &kthread_create_list);
> > spin_unlock(&kthread_create_lock);
> >
> > + if (unlikely(!kthreadd_task))
> > + wait_for_completion(&kthreadd_task_init_done);
> > +
>
> Yes, this should work. But I _think_ we can make the better fix...
>
> I'll try to make the patch soon. Afaics we don't need
> kthreadd_task_init_done.
ok.
Ingo
next prev parent reply other threads:[~2009-09-01 13:15 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-29 16:27 [PATCH] x86: detect stack protector for i386 builds on x86_64 Michal Schmidt
2009-08-30 13:39 ` Américo Wang
2009-08-30 18:43 ` [tip:x86/asm] x86: Detect " tip-bot for Michal Schmidt
2009-09-01 10:03 ` Ingo Molnar
2009-09-01 11:39 ` [PATCH] kthreads: Fix startup synchronization boot crash Ingo Molnar
2009-09-01 13:04 ` Oleg Nesterov
2009-09-01 13:14 ` Ingo Molnar [this message]
2009-09-01 13:37 ` Oleg Nesterov
2009-09-01 13:59 ` Ingo Molnar
2009-09-01 14:55 ` Oleg Nesterov
2009-09-01 15:54 ` Ingo Molnar
2009-09-01 16:00 ` Oleg Nesterov
2009-09-02 13:06 ` Ingo Molnar
2009-09-01 16:52 ` [PATCH 0/1] kthreads: simplify !kthreadd_task logic, kill kthreadd_task_init_done Oleg Nesterov
2009-09-01 16:53 ` [PATCH 1/1] " Oleg Nesterov
2009-09-01 23:22 ` [PATCH 0/1] " Eric W. Biederman
2009-09-02 9:13 ` Oleg Nesterov
2009-09-04 7:37 ` Ingo Molnar
2009-09-18 16:32 ` Wu Fei
2009-09-18 18:54 ` Oleg Nesterov
2009-09-18 19:17 ` Linus Torvalds
2009-09-18 21:12 ` Oleg Nesterov
2009-09-18 21:15 ` Oleg Nesterov
2009-09-18 22:06 ` Linus Torvalds
2009-09-18 23:11 ` Eric W. Biederman
2009-09-18 23:22 ` Oleg Nesterov
2009-09-18 23:38 ` Linus Torvalds
2009-09-01 15:08 ` [PATCH] kthreads: Fix startup synchronization boot crash Américo Wang
2009-09-01 15:19 ` Oleg Nesterov
2009-08-31 6:21 ` [PATCH] x86: detect stack protector for i386 builds on x86_64 Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090901131440.GA29783@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=arjan@infradead.org \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mschmidt@redhat.com \
--cc=oleg@redhat.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.