Bartlomiej Zolnierkiewicz
da331ba8e9
drivers/dma/pl330.c: fix locking in pl330_free_chan_resources()
tasklet_kill() may sleep so call it before taking pch->lock.
Fixes following lockup:
BUG: scheduling while atomic: cat/2383/0x00000002
Modules linked in:
unwind_backtrace+0x0/0xfc
__schedule_bug+0x4c/0x58
__schedule+0x690/0x6e0
sys_sched_yield+0x70/0x78
tasklet_kill+0x34/0x8c
pl330_free_chan_resources+0x24/0x88
dma_chan_put+0x4c/0x50
[...]
BUG: spinlock lockup suspected on CPU#0, swapper/0/0
lock: 0xe52aa04c, .magic: dead4ead, .owner: cat/2383, .owner_cpu: 1
unwind_backtrace+0x0/0xfc
do_raw_spin_lock+0x194/0x204
_raw_spin_lock_irqsave+0x20/0x28
pl330_tasklet+0x2c/0x5a8
tasklet_action+0xfc/0x114
__do_softirq+0xe4/0x19c
irq_exit+0x98/0x9c
handle_IPI+0x124/0x16c
gic_handle_irq+0x64/0x68
__irq_svc+0x40/0x70
cpuidle_wrap_enter+0x4c/0xa0
cpuidle_enter_state+0x18/0x68
cpuidle_idle_call+0xac/0xe0
cpu_idle+0xac/0xf0
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Vinod Koul <vinod.koul@linux.intel.com>
Cc: Tomasz Figa <t.figa@samsung.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-07-03 16:07:22 -07:00
..
2013-02-23 17:09:55 -08:00
2013-05-09 09:46:45 -07:00
2013-04-15 09:51:18 +05:30
2013-01-03 15:57:15 -08:00
2013-04-30 15:50:12 +05:30
2013-05-14 10:23:57 +05:30
2013-01-13 05:19:45 -08:00
2013-04-30 14:17:41 +05:30
2013-05-09 09:46:45 -07:00
2013-02-26 09:24:48 -08:00
2013-06-17 13:54:27 +02:00
2013-01-07 17:36:37 +01:00
2013-05-02 21:52:26 +05:30
2012-03-13 11:37:22 +05:30
2013-06-08 02:13:44 +05:30
2013-04-15 22:04:19 +05:30
2013-04-15 22:04:19 +05:30
2013-06-18 10:52:03 +05:30
2013-01-12 05:07:22 -08:00
2012-11-28 12:42:36 -08:00
2012-03-13 11:36:06 +05:30
2013-04-15 09:51:18 +05:30
2013-04-15 09:51:16 +05:30
2012-09-01 08:57:12 -07:00
2013-01-03 15:57:15 -08:00
2013-02-26 09:24:48 -08:00
2010-03-30 22:02:32 +09:00
2013-06-24 15:55:08 +05:30
2013-04-30 15:50:12 +05:30
2013-02-26 09:24:48 -08:00
2013-01-25 12:21:46 -08:00
2013-01-03 15:57:15 -08:00
2013-02-26 09:24:48 -08:00
2012-11-22 18:16:37 +01:00
2013-04-04 21:22:43 +08:00
2013-05-02 21:50:38 +05:30
2013-04-15 09:51:19 +05:30
2013-04-15 09:51:16 +05:30
2013-07-03 16:07:22 -07:00
2013-01-03 15:57:15 -08:00
2013-05-02 20:48:23 +05:30
2013-06-04 11:12:10 +02:00
2013-05-23 21:13:19 +02:00
2013-06-25 11:20:15 -07:00
2013-05-18 11:54:55 +02:00
2013-04-15 09:51:16 +05:30
2011-07-14 04:02:08 +05:30
2013-04-15 09:51:16 +05:30
2012-03-13 11:36:06 +05:30
2012-07-01 14:15:23 +01:00
2012-07-01 14:15:23 +01:00