ARM: disable preemption in machine_shutdown
authorMike J. Chen <mjchen@google.com>
Thu, 24 May 2012 22:12:36 +0000 (15:12 -0700)
committerandroid code review <noreply-gerritcodereview@google.com>
Mon, 20 Aug 2012 22:50:55 +0000 (15:50 -0700)
commit8f4d8bd72fb25ef86463828774798d9a15ba90fe
treee207e218ff1a6ef014b387fc4ace68bdd2757b61
parent16f1d4248241c8b50b26da466b263cffecac646d
ARM: disable preemption in machine_shutdown

Since the smp call to stop the other cpus are handled in those
cpus in interrupt context, there's a potential for those smp
handlers to interrupt threads holding spin locks (such as the
one a mutex holds).  This prevents those threads from ever
releasing their spin lock, so if the cpu doing the shutdown
is allowed to switch to another thread that tries to grab the
same lock/mutex, we could get into a deadlock (the spin lock
call is called with preemption disabled in the mutex lock code).

To avoid that possibility, disable preemption before doing the
smp_send_stop().

Change-Id: I7976c5382d7173fcb3cd14da8cc5083d442b2544
Signed-off-by: Mike J. Chen <mjchen@google.com>
arch/arm/kernel/process.c