kdb: Add message about CONFIG_DEBUG_RODATA on failure to install breakpoint
Jason Wessel [Wed, 21 Sep 2011 20:07:47 +0000 (13:07 -0700)]
On x86, if CONFIG_DEBUG_RODATA is set, one cannot set breakpoints
via KDB.  Apparently this is a well-known problem, as at least one distribution
now ships with both KDB enabled and CONFIG_DEBUG_RODATA=y for security reasons.

This patch adds an printk message to the breakpoint failure case,
in order to provide suggestions about how to use the debugger.

Reported-by: Tim Bird <tim.bird@am.sony.com>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Acked-by: Tim Bird <tim.bird@am.sony.com>

kernel/debug/kdb/kdb_bp.c

index 20059ef..8418c2f 100644 (file)
@@ -153,6 +153,13 @@ static int _kdb_bp_install(struct pt_regs *regs, kdb_bp_t *bp)
        } else {
                kdb_printf("%s: failed to set breakpoint at 0x%lx\n",
                           __func__, bp->bp_addr);
+#ifdef CONFIG_DEBUG_RODATA
+               if (!bp->bp_type) {
+                       kdb_printf("Software breakpoints are unavailable.\n"
+                                  "  Change the kernel CONFIG_DEBUG_RODATA=n\n"
+                                  "  OR use hw breaks: help bph\n");
+               }
+#endif
                return 1;
        }
        return 0;