xen: sched: fix spinlock issue in schedule_cpu_switch().
authorDario Faggioli <dario.faggioli@citrix.com>
Mon, 11 Apr 2016 16:27:01 +0000 (18:27 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 11 Apr 2016 16:56:00 +0000 (12:56 -0400)
Commit 94734ab7c3f5 ("xen: sched: close potential races
when switching scheduler to CPUs") buggily replaced a call
to pcpu_schedule_lock_irq() with just pcpu_schedule_lock(),
causing the relevant irq_safe vs. non-irq_safe ASSERT()
in check_lock() to trigger.

Fix that.

Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
Acked-by: George Dunlap <george.dunlap@citrix.com>
xen/common/schedule.c

index 922b035cc23d2c245422314c23ba32dde0d72832..013e5f142af092b3c756762e6f6d6cc2642df1b8 100644 (file)
@@ -1702,7 +1702,7 @@ int schedule_cpu_switch(unsigned int cpu, struct cpupool *c)
      * that the lock itself changed, and retry acquiring the new one (which
      * will be the correct, remapped one, at that point).
      */
-    old_lock = pcpu_schedule_lock(cpu);
+    old_lock = pcpu_schedule_lock_irq(cpu);
 
     vpriv_old = idle->sched_priv;
     ppriv_old = per_cpu(schedule_data, cpu).sched_priv;