sched: spinlock recursion in migrate_swap_stop

From: Sasha Levin
Date: Mon May 12 2014 - 14:26:30 EST


Hi all,

While fuzzing with trinity inside a KVM tools guest running the latest -next
kernel I've stumbled on the following spew:

[ 1738.758667] BUG: spinlock recursion on CPU#23, migration/23/328
[ 1738.761291] lock: 0xffff8801f93b0c30, .magic: dead4ead, .owner: migration/23/328, .owner_cpu: 23
[ 1738.762733] CPU: 23 PID: 328 Comm: migration/23 Not tainted 3.15.0-rc5-next-20140512-sasha-00019-ga20bc00-dirty #456
[ 1738.764081] ffff8801f93b0c30 ffff8805505efbc8 ffffffff9453e1ec 0000000000000004
[ 1738.764914] ffff8805505cb000 ffff8805505efbe8 ffffffff94531095 ffff8801f93b0c30
[ 1738.765120] ffffffff9583485e ffff8805505efc08 ffffffff945310c0 ffff8801f93b0c30
[ 1738.765120] Call Trace:
[ 1738.768386] dump_stack (lib/dump_stack.c:52)
[ 1738.768386] spin_dump (kernel/locking/spinlock_debug.c:68 (discriminator 6))
[ 1738.768386] spin_bug (kernel/locking/spinlock_debug.c:76)
[ 1738.768386] do_raw_spin_lock (kernel/locking/spinlock_debug.c:84 kernel/locking/spinlock_debug.c:135)
[ 1738.768386] _raw_spin_lock_nested (kernel/locking/spinlock.c:362 (discriminator 2))
[ 1738.768386] ? migrate_swap_stop (arch/x86/include/asm/paravirt.h:804 kernel/sched/sched.h:1406 kernel/sched/core.c:1099)
[ 1738.768386] ? _raw_spin_lock (kernel/locking/spinlock.c:152)
[ 1738.768386] ? migrate_swap_stop (kernel/sched/sched.h:1393 kernel/sched/core.c:1097)
[ 1738.768386] migrate_swap_stop (arch/x86/include/asm/paravirt.h:804 kernel/sched/sched.h:1406 kernel/sched/core.c:1099)
[ 1738.768386] ? queue_stop_cpus_work (include/linux/cpumask.h:108 include/linux/cpumask.h:174 kernel/stop_machine.c:375)
[ 1738.768386] multi_cpu_stop (kernel/stop_machine.c:225)
[ 1738.768386] ? queue_stop_cpus_work (kernel/stop_machine.c:171)
[ 1738.768386] cpu_stopper_thread (kernel/stop_machine.c:498)
[ 1738.768386] ? put_lock_stats.isra.12 (arch/x86/include/asm/preempt.h:98 kernel/locking/lockdep.c:254)
[ 1738.768386] ? _raw_spin_unlock_irqrestore (arch/x86/include/asm/paravirt.h:809 include/linux/spinlock_api_smp.h:160 kernel/locking/spinlock.c:191)
[ 1738.768386] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[ 1738.768386] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2557 kernel/locking/lockdep.c:2599)
[ 1738.768386] smpboot_thread_fn (kernel/smpboot.c:160)
[ 1738.768386] ? __smpboot_create_thread (kernel/smpboot.c:105)
[ 1738.768386] kthread (kernel/kthread.c:210)
[ 1738.768386] ? complete (kernel/sched/completion.c:35)
[ 1738.768386] ? kthread_create_on_node (kernel/kthread.c:176)
[ 1738.768386] ret_from_fork (arch/x86/kernel/entry_64.S:553)
[ 1738.768386] ? kthread_create_on_node (kernel/kthread.c:176)


Thanks,
Sasha
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/