Blackfin: fix deadlock in SMP IPI handler
commit11b46bb25fb2cc85e7414845575a17a944f59b60
authorSonic Zhang <sonic.zhang@analog.com>
Wed, 10 Jun 2009 08:42:41 +0000 (10 08:42 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 20 Jul 2009 03:38:49 +0000 (19 20:38 -0700)
treed589bf20517d809fd5e65b900be3d16838dbe2ae
parente9b64c9ce791fb691fc3c1e68b94d92ae143eca7
Blackfin: fix deadlock in SMP IPI handler

commit 86f2008bf546af9a434f480710e8d33891616bf5 upstream.

When a low priority interrupt (like ethernet) is triggered between 2 high
priority IPI messages, a deadlock in disable_irq() is hit by the second
IPI handler.  This is because the second IPI message is queued within the
first IPI handler, but the handler doesn't process all messages, and new
ones are inserted rather than appended.  So now we process all the pending
messages, and append new ones to the pending list.

URL: http://blackfin.uclinux.org/gf/tracker/5226

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/blackfin/mach-common/smp.c