linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] kdb:  Avoid using dbg_io_ops until it is initialized
@ 2011-09-21 20:19 Tim Bird
  2011-09-22  2:52 ` [Kgdb-bugreport] " Dongdong Deng
  2012-03-20 18:42 ` Jason Wessel
  0 siblings, 2 replies; 5+ messages in thread
From: Tim Bird @ 2011-09-21 20:19 UTC (permalink / raw)
  To: Jason Wessel; +Cc: kgdb-bugreport, linux kernel

This fixes a bug with setting a breakpoint during kdb initialization
(from kdb_cmds).  Any call to kdb_printf() before the initialization
of the kgdboc serial console driver (which happens much later during
bootup than kdb_init), results in kernel panic due to the use of
dbg_io_ops before it is initialized.

Signed-off-by: Tim Bird <tim.bird@am.sony.com>
---
 kernel/debug/kdb/kdb_io.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
index c9b7f4f..3bc995f 100644
--- a/kernel/debug/kdb/kdb_io.c
+++ b/kernel/debug/kdb/kdb_io.c
@@ -675,7 +675,7 @@ kdb_printit:
 	if (!dbg_kdb_mode && kgdb_connected) {
 		gdbstub_msg_write(kdb_buffer, retlen);
 	} else {
-		if (!dbg_io_ops->is_console) {
+		if (dbg_io_ops && !dbg_io_ops->is_console) {
 			len = strlen(kdb_buffer);
 			cp = kdb_buffer;
 			while (len--) {
-- 
1.7.2.3



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Kgdb-bugreport] [PATCH] kdb: Avoid using dbg_io_ops until it is initialized
  2011-09-21 20:19 [PATCH] kdb: Avoid using dbg_io_ops until it is initialized Tim Bird
@ 2011-09-22  2:52 ` Dongdong Deng
  2011-09-22 17:39   ` Tim Bird
  2012-03-20 18:42 ` Jason Wessel
  1 sibling, 1 reply; 5+ messages in thread
From: Dongdong Deng @ 2011-09-22  2:52 UTC (permalink / raw)
  To: Tim Bird; +Cc: Jason Wessel, kgdb-bugreport, linux kernel

On Thu, Sep 22, 2011 at 4:19 AM, Tim Bird <tim.bird@am.sony.com> wrote:
> This fixes a bug with setting a breakpoint during kdb initialization
> (from kdb_cmds).  Any call to kdb_printf() before the initialization
> of the kgdboc serial console driver (which happens much later during
> bootup than kdb_init), results in kernel panic due to the use of
> dbg_io_ops before it is initialized.


Did you get the panic for that case?

Dongdong


>
> Signed-off-by: Tim Bird <tim.bird@am.sony.com>
> ---
>  kernel/debug/kdb/kdb_io.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
> index c9b7f4f..3bc995f 100644
> --- a/kernel/debug/kdb/kdb_io.c
> +++ b/kernel/debug/kdb/kdb_io.c
> @@ -675,7 +675,7 @@ kdb_printit:
>        if (!dbg_kdb_mode && kgdb_connected) {
>                gdbstub_msg_write(kdb_buffer, retlen);
>        } else {
> -               if (!dbg_io_ops->is_console) {
> +               if (dbg_io_ops && !dbg_io_ops->is_console) {
>                        len = strlen(kdb_buffer);
>                        cp = kdb_buffer;
>                        while (len--) {
> --
> 1.7.2.3
>
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure contains a
> definitive record of customers, application performance, security
> threats, fraudulent activity and more. Splunk takes this data and makes
> sense of it. Business sense. IT sense. Common sense.
> http://p.sf.net/sfu/splunk-d2dcopy1
> _______________________________________________
> Kgdb-bugreport mailing list
> Kgdb-bugreport@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Kgdb-bugreport] [PATCH] kdb: Avoid using dbg_io_ops until it is initialized
  2011-09-22  2:52 ` [Kgdb-bugreport] " Dongdong Deng
@ 2011-09-22 17:39   ` Tim Bird
  0 siblings, 0 replies; 5+ messages in thread
From: Tim Bird @ 2011-09-22 17:39 UTC (permalink / raw)
  To: Dongdong Deng; +Cc: Jason Wessel, kgdb-bugreport, linux kernel

On 09/21/2011 07:52 PM, Dongdong Deng wrote:
> On Thu, Sep 22, 2011 at 4:19 AM, Tim Bird <tim.bird@am.sony.com> wrote:
>> This fixes a bug with setting a breakpoint during kdb initialization
>> (from kdb_cmds).  Any call to kdb_printf() before the initialization
>> of the kgdboc serial console driver (which happens much later during
>> bootup than kdb_init), results in kernel panic due to the use of
>> dbg_io_ops before it is initialized.
> 
> 
> Did you get the panic for that case?

Yes.  See below (without the patch):

[    0.009552] BUG: unable to handle kernel NULL pointer dereference at 0000001c
[    0.009999] IP: [<c109112f>] vkdb_printf+0xef/0x690
[    0.009999] *pde = 00000000
[    0.009999] Oops: 0000 [#1] SMP
[    0.009999] Modules linked in:
[    0.009999]
[    0.009999] Pid: 0, comm: swapper Not tainted 3.1.0-rc2+ #10                  /D865PERL
[    0.009999] EIP: 0060:[<c109112f>] EFLAGS: 00010002 CPU: 0
[    0.009999] EIP is at vkdb_printf+0xef/0x690
[    0.009999] EAX: 00000000 EBX: c18d06c0 ECX: 0000000f EDX: 00000001
[    0.009999] ESI: 0000000f EDI: c184cd2a EBP: c18adee0 ESP: c18ade70
[    0.009999]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[    0.009999] Process swapper (pid: 0, ti=c18ac000 task=c18b1fa0 task.ti=c18ac000)
[    0.009999] Stack:
[    0.009999]  c18adef8 c18adeb8 c105ecc2 007a6bc8 00000000 00000202 209db643 00000000
[    0.009999]  c18adeb0 00000000 017f5762 c17f5764 c18adebc c18adf40 00000000 c19db643
[    0.009999]  c18adf08 c1094040 c17f5767 c18adf00 c18adecc c19db720 00000001 00000000
[    0.009999] Call Trace:
[    0.009999]  [<c105ecc2>] ? sched_clock_local+0xb2/0x190
[    0.009999]  [<c1094040>] ? kdbgetaddrarg+0x80/0x220
[    0.009999]  [<c10916de>] kdb_printf+0xe/0x10
[    0.009999]  [<c1097bc9>] kdb_printbp+0x39/0xc0
[    0.009999]  [<c111cd30>] ? sync_one_sb+0x20/0x20
[    0.009999]  [<c1097e25>] kdb_bp+0x1d5/0x260
[    0.009999]  [<c111cd30>] ? sync_one_sb+0x20/0x20
[    0.009999]  [<c1094ecd>] kdb_parse+0x2ed/0x630
[    0.009999]  [<c1097950>] ? kdb_bt+0x3b0/0x3b0
[    0.009999]  [<c1913208>] ? kdb_initbptab+0x188/0x18e
[    0.009999]  [<c191301b>] kdb_init+0x5d2/0x637
[    0.009999]  [<c19129f1>] dbg_late_init+0x22/0x24
[    0.009999]  [<c18fd7a3>] start_kernel+0x2a8/0x2ea
[    0.009999]  [<c18fd325>] ? kernel_init+0x13a/0x13a
[    0.009999]  [<c18fd0b3>] i386_start_kernel+0xb3/0xbb
[    0.009999] Code: 00 c6 45 ab 20 c7 45 ac 00 00 00 00 b8 e0 b3 9d c1 e8 76 7a 18 00 8b 15 44 b8 8b c1 85 d2 89 c6 0f 84 1
6 01 00 00 a1 74 65 9d c1 <8b> 78 1c 85 ff 75 19 e9 b3 02 00 00 90 8d 74 26 00 89 d8 89 f1
[    0.009999] EIP: [<c109112f>] vkdb_printf+0xef/0x690 SS:ESP 0068:c18ade70
[    0.009999] CR2: 000000000000001c
[    0.009999] ---[ end trace 4eaa2a86a8e2da22 ]---
[    0.009999] Kernel panic - not syncing: Attempted to kill the idle task!
[    0.009999] Pid: 0, comm: swapper Tainted: G      D     3.1.0-rc2+ #10
[    0.009999] Call Trace:
[    0.009999]  [<c160a2f7>] panic+0x57/0x157
[    0.009999]  [<c103ea2b>] do_exit+0x6ab/0x7a0
[    0.009999]  [<c103d2e7>] ? kmsg_dump+0x37/0xc0
[    0.009999]  [<c160a41f>] ? printk+0x28/0x2a
[    0.009999]  [<c160dc45>] oops_end+0x85/0xc0
[    0.009999]  [<c1023ede>] no_context+0xbe/0x150
[    0.009999]  [<c1024000>] __bad_area_nosemaphore+0x90/0x140
[    0.009999]  [<c1041887>] ? irq_exit+0x57/0x90
[    0.009999]  [<c10039d6>] ? do_IRQ+0x46/0xb0
[    0.009999]  [<c160f590>] ? spurious_fault+0xd0/0xd0
[    0.009999]  [<c10240c2>] bad_area_nosemaphore+0x12/0x20
[    0.009999]  [<c160f869>] do_page_fault+0x2d9/0x420
[    0.009999]  [<c121007b>] ? kobject_uevent_env+0x3bb/0x400
[    0.009999]  [<c12164d8>] ? string+0x38/0xc0
[    0.009999]  [<c160f590>] ? spurious_fault+0xd0/0xd0
[    0.009999]  [<c160d1d2>] error_code+0x5a/0x60
[    0.009999]  [<c160f590>] ? spurious_fault+0xd0/0xd0
[    0.009999]  [<c109112f>] ? vkdb_printf+0xef/0x690
[    0.009999]  [<c105ecc2>] ? sched_clock_local+0xb2/0x190
[    0.009999]  [<c1094040>] ? kdbgetaddrarg+0x80/0x220
[    0.009999]  [<c10916de>] kdb_printf+0xe/0x10
[    0.009999]  [<c1097bc9>] kdb_printbp+0x39/0xc0
[    0.009999]  [<c111cd30>] ? sync_one_sb+0x20/0x20
[    0.009999]  [<c1097e25>] kdb_bp+0x1d5/0x260
[    0.009999]  [<c111cd30>] ? sync_one_sb+0x20/0x20
[    0.009999]  [<c1094ecd>] kdb_parse+0x2ed/0x630
[    0.009999]  [<c1097950>] ? kdb_bt+0x3b0/0x3b0
[    0.009999]  [<c1913208>] ? kdb_initbptab+0x188/0x18e
[    0.009999]  [<c191301b>] kdb_init+0x5d2/0x637
[    0.009999]  [<c19129f1>] dbg_late_init+0x22/0x24
[    0.009999]  [<c18fd7a3>] start_kernel+0x2a8/0x2ea
[    0.009999]  [<c18fd325>] ? kernel_init+0x13a/0x13a
[    0.009999]  [<c18fd0b3>] i386_start_kernel+0xb3/0xbb





=============================
Tim Bird
Architecture Group Chair, CE Workgroup of the Linux Foundation
Senior Staff Engineer, Sony Network Entertainment
=============================


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] kdb:  Avoid using dbg_io_ops until it is initialized
  2011-09-21 20:19 [PATCH] kdb: Avoid using dbg_io_ops until it is initialized Tim Bird
  2011-09-22  2:52 ` [Kgdb-bugreport] " Dongdong Deng
@ 2012-03-20 18:42 ` Jason Wessel
  2012-03-20 21:31   ` Tim Bird
  1 sibling, 1 reply; 5+ messages in thread
From: Jason Wessel @ 2012-03-20 18:42 UTC (permalink / raw)
  To: Tim Bird; +Cc: kgdb-bugreport, linux kernel

On 09/21/2011 03:19 PM, Tim Bird wrote:
> This fixes a bug with setting a breakpoint during kdb initialization
> (from kdb_cmds). Any call to kdb_printf() before the initialization
> of the kgdboc serial console driver (which happens much later during
> bootup than kdb_init), results in kernel panic due to the use of
> dbg_io_ops before it is initialized.

I added this patch to the merge queue for the 3.4 kernel.

In the test and review of this patch, I thought there might be another
race condition with kdb pager, but this is not the case.  The run time
validation shows that the kdb pager can only get activated by entering
and configuring the kdb shell and it is turned off on exit, so we are
all set and no further changes are needed.

Thanks,
Jason.



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] kdb:  Avoid using dbg_io_ops until it is initialized
  2012-03-20 18:42 ` Jason Wessel
@ 2012-03-20 21:31   ` Tim Bird
  0 siblings, 0 replies; 5+ messages in thread
From: Tim Bird @ 2012-03-20 21:31 UTC (permalink / raw)
  To: Jason Wessel; +Cc: kgdb-bugreport, linux kernel

On 03/20/2012 11:42 AM, Jason Wessel wrote:
> On 09/21/2011 03:19 PM, Tim Bird wrote:
>> This fixes a bug with setting a breakpoint during kdb initialization
>> (from kdb_cmds). Any call to kdb_printf() before the initialization
>> of the kgdboc serial console driver (which happens much later during
>> bootup than kdb_init), results in kernel panic due to the use of
>> dbg_io_ops before it is initialized.
> 
> I added this patch to the merge queue for the 3.4 kernel.
> 
> In the test and review of this patch, I thought there might be another
> race condition with kdb pager, but this is not the case.  The run time
> validation shows that the kdb pager can only get activated by entering
> and configuring the kdb shell and it is turned off on exit, so we are
> all set and no further changes are needed.

Thanks!
 -- Tim

=============================
Tim Bird
Architecture Group Chair, CE Workgroup of the Linux Foundation
Senior Staff Engineer, Sony Network Entertainment
=============================


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-03-20 21:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-21 20:19 [PATCH] kdb: Avoid using dbg_io_ops until it is initialized Tim Bird
2011-09-22  2:52 ` [Kgdb-bugreport] " Dongdong Deng
2011-09-22 17:39   ` Tim Bird
2012-03-20 18:42 ` Jason Wessel
2012-03-20 21:31   ` Tim Bird

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).