Peter Zijlstra
fa33507a22
printk: robustify printk, fix #2
Dmitry Adamushko reported:
> [*] btw., with DEBUG being enabled, pr_debug() generates [1] when
> debug_smp_processor_id() is used (CONFIG_DEBUG_PREEMPT).
>
> the problem seems to be caused by the following commit:
> commit b845b517b5
> Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Date: Fri Aug 8 21:47:09 2008 +0200
>
> printk: robustify printk
>
>
> wake_up_klogd() -> __get_cpu_var() -> smp_processor_id()
>
> and that's being called from release_console_sem() which is, in turn,
> said to be "may be called from any context" [2]
>
> and in this case, it seems to be called from some non-preemptible
> context (although, it can't be printk()...
> although, I haven't looked carefully yet).
>
> Provided [2], __get_cpu_var() is perhaps not the right solution there.
>
>
> [1]
>
> [ 7697.942005] BUG: using smp_processor_id() in preemptible [00000000] code: syslogd/3542
> [ 7697.942005] caller is wake_up_klogd+0x1b/0x50
> [ 7697.942005] Pid: 3542, comm: syslogd Not tainted 2.6.27-rc3-tip-git #2
> [ 7697.942005] Call Trace:
> [ 7697.942005] [<ffffffff8036b398>] debug_smp_processor_id+0xe8/0xf0
> [ 7697.942005] [<ffffffff80239d3b>] wake_up_klogd+0x1b/0x50
> [ 7697.942005] [<ffffffff8023a047>] release_console_sem+0x1e7/0x200
> [ 7697.942005] [<ffffffff803c0f17>] do_con_write+0xb7/0x1f30
> [ 7697.942005] [<ffffffff8020d920>] ? show_trace+0x10/0x20
> [ 7697.942005] [<ffffffff8020dc42>] ? dump_stack+0x72/0x80
> [ 7697.942005] [<ffffffff8036392d>] ? __ratelimit+0xbd/0xe0
> [ 7697.942005] [<ffffffff8036b398>] ? debug_smp_processor_id+0xe8/0xf0
> [ 7697.942005] [<ffffffff80239d3b>] ? wake_up_klogd+0x1b/0x50
> [ 7697.942005] [<ffffffff8023a047>] ? release_console_sem+0x1e7/0x200
> [ 7697.942005] [<ffffffff803c2de9>] con_write+0x19/0x30
> [ 7697.942005] [<ffffffff803b37b6>] write_chan+0x276/0x3c0
> [ 7697.942005] [<ffffffff80232b20>] ? default_wake_function+0x0/0x10
> [ 7697.942005] [<ffffffff804cb872>] ? _spin_lock_irqsave+0x22/0x50
> [ 7697.942005] [<ffffffff803b1334>] tty_write+0x194/0x260
> [ 7697.942005] [<ffffffff803b3540>] ? write_chan+0x0/0x3c0
> [ 7697.942005] [<ffffffff803b14a4>] redirected_tty_write+0xa4/0xb0
> [ 7697.942005] [<ffffffff803b1400>] ? redirected_tty_write+0x0/0xb0
> [ 7697.942005] [<ffffffff802a88c2>] do_loop_readv_writev+0x52/0x80
> [ 7697.942005] [<ffffffff802a939d>] do_readv_writev+0x1bd/0x1d0
> [ 7697.942005] [<ffffffff802a93e9>] vfs_writev+0x39/0x60
> [ 7697.942005] [<ffffffff802a9870>] sys_writev+0x50/0x90
> [ 7697.942005] [<ffffffff8020bb3b>] system_call_fastpath+0x16/0x1b
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reported-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-08-20 12:22:37 +02:00
..
2008-08-05 14:33:47 -07:00
2008-07-26 12:00:04 -07:00
2008-08-11 13:46:53 +02:00
2008-07-28 23:32:00 +02:00
2008-07-25 10:53:47 -07:00
2008-08-01 12:15:16 -04:00
2008-08-01 12:15:03 -04:00
2008-08-04 06:13:50 -04:00
2008-06-27 18:09:16 +02:00
2008-07-24 10:47:22 -07:00
2008-07-30 09:41:44 -07:00
2008-07-28 23:32:00 +02:00
2008-07-30 09:41:44 -07:00
2008-07-25 10:53:47 -07:00
2008-08-05 14:33:49 -07:00
2008-07-26 20:53:20 -04:00
2008-08-01 12:01:11 -07:00
2008-07-28 16:30:21 -07:00
2008-06-23 13:31:15 +02:00
2008-07-15 21:55:59 +02:00
2008-07-25 10:53:27 -07:00
2008-07-23 11:18:28 +02:00
2008-07-26 12:00:04 -07:00
2008-08-01 08:39:35 -05:00
2008-07-25 10:53:28 -07:00
2008-07-25 10:53:30 -07:00
2008-07-26 12:00:09 -07:00
2008-06-24 01:28:20 +02:00
2008-06-24 01:28:20 +02:00
2008-07-14 14:55:13 -07:00
2008-07-29 00:07:55 +02:00
2008-07-30 09:41:45 -07:00
2008-07-28 12:16:31 +10:00
2008-07-28 18:12:36 +02:00
2008-07-25 10:53:37 -07:00
2008-07-25 10:53:37 -07:00
2008-07-25 10:53:29 -07:00
2008-07-25 10:53:47 -07:00
2008-07-25 10:53:45 -07:00
2008-08-05 14:33:50 -07:00
2008-07-25 10:53:38 -07:00
2008-08-20 12:22:37 +02:00
2008-07-25 10:53:27 -07:00
2008-07-26 12:00:09 -07:00
2008-07-28 12:16:31 +10:00
2008-07-15 14:12:03 -07:00
2008-07-16 00:29:07 +02:00
2008-06-26 09:24:33 +02:00
2008-08-05 14:33:46 -07:00
2008-07-25 10:53:36 -07:00
2008-07-30 09:41:43 -07:00
2008-07-21 21:55:02 -07:00
2008-07-14 12:19:13 +02:00
2008-06-06 15:19:28 +02:00
2008-06-06 15:19:44 +02:00
2008-06-27 14:31:31 +02:00
2008-07-23 19:36:53 -07:00
2008-06-27 14:31:47 +02:00
2008-07-24 12:53:51 -07:00
2008-07-04 12:50:23 +02:00
2008-08-04 17:16:20 -07:00
2008-08-05 14:33:47 -07:00
2008-07-26 12:00:09 -07:00
2008-07-26 12:00:04 -07:00
2008-07-26 12:00:04 -07:00
2008-07-26 12:00:04 -07:00
2008-06-30 09:20:55 +02:00
2008-07-28 12:16:30 +10:00
2008-07-25 11:35:41 -07:00
2008-07-26 12:00:04 -07:00
2008-07-25 10:53:45 -07:00
2008-07-27 09:45:34 -07:00
2008-07-25 10:53:47 -07:00
2008-08-11 13:46:53 +02:00
2008-07-27 16:12:28 -07:00
2008-07-30 09:41:47 -07:00