Heiko Carstens
5b6045a906
trace: disable preemption before taking raw spinlocks
...
s390 code uses smp_processor_id() in __raw_spin_lock() code which
reveals that a (raw) spinlock is taken without preemption disabled.
This can potentially deadlock.
To fix this explicitly disable and enable preemption.
BUG: using smp_processor_id() in preemptible [00000000] code: cat/2278
caller is trace_find_cmdline+0x40/0xfc
CPU: 0 Not tainted 2.6.30-rc7-dirty #39
Process cat (pid: 2278, task: 000000003faedb68, ksp: 000000003b33b988)
000000003b33b988 000000003b33bae0 0000000000000002 0000000000000000
000000003b33bb80 000000003b33baf8 000000003b33baf8 00000000000175d6
0000000000000001 000000003b33b988 000000003f9b0000 000000000000000b
000000000000000c 000000003b33bb40 000000003b33bae0 0000000000000000
0000000000000000 00000000000175d6 000000003b33bae0 000000003b33bb28
Call Trace:
([<00000000000174b2>] show_trace+0x112/0x170)
[<0000000000017582>] show_stack+0x72/0x100
[<0000000000441538>] dump_stack+0xc8/0xd8
[<000000000025c350>] debug_smp_processor_id+0x114/0x130
[<00000000000bf0e4>] trace_find_cmdline+0x40/0xfc
[<00000000000c35d4>] trace_print_context+0x58/0xac
[<00000000000bb676>] print_trace_line+0x416/0x470
[<00000000000bc8fe>] s_show+0x4e/0x428
[<000000000013834e>] seq_read+0x36a/0x5d4
[<0000000000112a78>] vfs_read+0xc8/0x174
[<0000000000112c58>] SyS_read+0x74/0xc4
[<000000000002c7ae>] sysc_noemu+0x10/0x16
[<000002000012436c>] 0x2000012436c
1 lock held by cat/2278:
#0 : (&p->lock){+.+.+.}, at: [<0000000000138056>] seq_read+0x72/0x5d4
[ Impact: fix preempt-unsafe raw spinlock ]
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
2009-05-28 01:21:03 +02:00
..
2009-05-19 10:29:21 +02:00
2009-05-18 10:24:13 +02:00
2009-05-26 03:03:21 +02:00
2009-04-14 00:00:56 +02:00
2009-05-07 13:36:22 +02:00
2009-05-11 13:22:26 -04:00
2009-05-11 23:33:06 -04:00
2009-04-07 14:43:06 +02:00
2009-05-07 11:17:34 +02:00
2009-03-22 18:16:54 +01:00
2009-05-06 10:38:19 +02:00
2009-04-29 14:06:03 +02:00
2009-05-14 23:55:12 -04:00
2009-05-26 03:30:31 +02:00
2009-04-29 14:06:03 +02:00
2009-03-24 23:41:11 -04:00
2009-05-07 13:36:22 +02:00
2009-04-07 14:43:06 +02:00
2009-03-23 09:22:15 +01:00
2009-05-26 20:31:50 +02:00
2009-05-25 23:53:41 +02:00
2009-05-07 11:17:34 +02:00
2009-04-07 14:43:07 +02:00
2009-04-14 22:05:43 -04:00
2009-04-23 23:01:36 -04:00
2009-04-07 13:36:21 +02:00
2009-04-07 14:43:07 +02:00
2009-04-07 13:47:45 +02:00
2009-03-24 23:22:58 -04:00
2009-04-09 05:43:32 +02:00
2009-04-07 14:43:07 +02:00
2009-04-07 13:47:45 +02:00
2009-05-28 01:21:03 +02:00
2009-05-07 13:36:22 +02:00