On 2016-12-08 12:20:28 [+0000], John Keeping wrote: > Hi, Hi John, > I am seeing the following splat when stopping btattach on v4.4.30-rt41 > with PREEMPT_RT_FULL with lockdep and slub_debug. > > The bad unlock balance seems to just be an effect of the lock having > been overwritten with POISON_FREE, the real issue is that > put_pwq_unlocked() is not resuming and unlocking the pool before the RCU > work scheduled indirectly by put_pwq() has completed. can you reproduce this? If so, is this patch helping? diff --git a/kernel/workqueue.c b/kernel/workqueue.c --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -1135,9 +1135,11 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) * As both pwqs and pools are RCU protected, the * following lock operations are safe. */ + rcu_read_lock(); local_spin_lock_irq(pendingb_lock, &pwq->pool->lock); put_pwq(pwq); local_spin_unlock_irq(pendingb_lock, &pwq->pool->lock); + rcu_read_unlock(); } } Sebastian -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html