Re: [PATCH] workqueue: missing idr_preload_end() inworker_pool_assign_id()

From: Stephen Rothwell
Date: Wed Mar 13 2013 - 17:51:56 EST


Hi Tejun,

On Wed, 13 Mar 2013 10:57:45 -0700 Tejun Heo <tj@xxxxxxxxxx> wrote:
>
> (cc'ing Stephen and linux-next)
>
> Hello, Artem.
>
> On Wed, Mar 13, 2013 at 09:51:32PM +0400, Artem Savkov wrote:
> > Added missing idr_preload_end() call in worker_pool_assign_id().
> > Without it preemption stays disabled resulting in lots of "scheduling while
> > atomic" BUGs during boot.
> ...
> > Introduced in "workqueue: convert to idr_alloc()"
>
> That patch doesn't use idr_preload(). It looks like the issue is
> introduced during linux-next merge of wq/for-3.10 and idr patches in
> -mm. Stephen, can you please add idr_preload_end() to the merge
> patch?

Oops, sorry about that. I assume it needs to be added just after the
spin_unlock_irq() but still inside the loop?

> Once the idr patches land in Linus' tree, I'll resolve the conflict
> from wq tree side.

Or you could do what Linus prefers and just tell him how to resolve the
conflict and thereby avoid a back merge or rebase (or provide him with a
separate branch that does the back merge with resolution in addition to
the unmerged branch to pull).

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

Attachment: pgp00000.pgp
Description: PGP signature