kdb: print real address of pointers instead of hashed addresses
commit568fb6f42a
upstream. Since commitad67b74d24
("printk: hash addresses printed with %p"), all pointers printed with %p are printed with hashed addresses instead of real addresses in order to avoid leaking addresses in dmesg and syslog. But this applies to kdb too, with is unfortunate: Entering kdb (current=0x(ptrval), pid 329) due to Keyboard Entry kdb> ps 15 sleeping system daemon (state M) processes suppressed, use 'ps A' to see all. Task Addr Pid Parent [*] cpu State Thread Command 0x(ptrval) 329 328 1 0 R 0x(ptrval) *sh 0x(ptrval) 1 0 0 0 S 0x(ptrval) init 0x(ptrval) 3 2 0 0 D 0x(ptrval) rcu_gp 0x(ptrval) 4 2 0 0 D 0x(ptrval) rcu_par_gp 0x(ptrval) 5 2 0 0 D 0x(ptrval) kworker/0:0 0x(ptrval) 6 2 0 0 D 0x(ptrval) kworker/0:0H 0x(ptrval) 7 2 0 0 D 0x(ptrval) kworker/u2:0 0x(ptrval) 8 2 0 0 D 0x(ptrval) mm_percpu_wq 0x(ptrval) 10 2 0 0 D 0x(ptrval) rcu_preempt The whole purpose of kdb is to debug, and for debugging real addresses need to be known. In addition, data displayed by kdb doesn't go into dmesg. This patch replaces all %p by %px in kdb in order to display real addresses. Fixes:ad67b74d24
("printk: hash addresses printed with %p") Cc: <stable@vger.kernel.org> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
ce583650a9
Коммит
dedde93bd6
|
@ -1182,7 +1182,7 @@ static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
|
|||
if (reason == KDB_REASON_DEBUG) {
|
||||
/* special case below */
|
||||
} else {
|
||||
kdb_printf("\nEntering kdb (current=0x%p, pid %d) ",
|
||||
kdb_printf("\nEntering kdb (current=0x%px, pid %d) ",
|
||||
kdb_current, kdb_current ? kdb_current->pid : 0);
|
||||
#if defined(CONFIG_SMP)
|
||||
kdb_printf("on processor %d ", raw_smp_processor_id());
|
||||
|
@ -1198,7 +1198,7 @@ static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
|
|||
*/
|
||||
switch (db_result) {
|
||||
case KDB_DB_BPT:
|
||||
kdb_printf("\nEntering kdb (0x%p, pid %d) ",
|
||||
kdb_printf("\nEntering kdb (0x%px, pid %d) ",
|
||||
kdb_current, kdb_current->pid);
|
||||
#if defined(CONFIG_SMP)
|
||||
kdb_printf("on processor %d ", raw_smp_processor_id());
|
||||
|
@ -2037,7 +2037,7 @@ static int kdb_lsmod(int argc, const char **argv)
|
|||
if (mod->state == MODULE_STATE_UNFORMED)
|
||||
continue;
|
||||
|
||||
kdb_printf("%-20s%8u 0x%p ", mod->name,
|
||||
kdb_printf("%-20s%8u 0x%px ", mod->name,
|
||||
mod->core_layout.size, (void *)mod);
|
||||
#ifdef CONFIG_MODULE_UNLOAD
|
||||
kdb_printf("%4d ", module_refcount(mod));
|
||||
|
@ -2048,7 +2048,7 @@ static int kdb_lsmod(int argc, const char **argv)
|
|||
kdb_printf(" (Loading)");
|
||||
else
|
||||
kdb_printf(" (Live)");
|
||||
kdb_printf(" 0x%p", mod->core_layout.base);
|
||||
kdb_printf(" 0x%px", mod->core_layout.base);
|
||||
|
||||
#ifdef CONFIG_MODULE_UNLOAD
|
||||
{
|
||||
|
@ -2330,7 +2330,7 @@ void kdb_ps1(const struct task_struct *p)
|
|||
return;
|
||||
|
||||
cpu = kdb_process_cpu(p);
|
||||
kdb_printf("0x%p %8d %8d %d %4d %c 0x%p %c%s\n",
|
||||
kdb_printf("0x%px %8d %8d %d %4d %c 0x%px %c%s\n",
|
||||
(void *)p, p->pid, p->parent->pid,
|
||||
kdb_task_has_cpu(p), kdb_process_cpu(p),
|
||||
kdb_task_state_char(p),
|
||||
|
@ -2343,7 +2343,7 @@ void kdb_ps1(const struct task_struct *p)
|
|||
} else {
|
||||
if (KDB_TSK(cpu) != p)
|
||||
kdb_printf(" Error: does not match running "
|
||||
"process table (0x%p)\n", KDB_TSK(cpu));
|
||||
"process table (0x%px)\n", KDB_TSK(cpu));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2722,7 +2722,7 @@ int kdb_register_flags(char *cmd,
|
|||
for_each_kdbcmd(kp, i) {
|
||||
if (kp->cmd_name && (strcmp(kp->cmd_name, cmd) == 0)) {
|
||||
kdb_printf("Duplicate kdb command registered: "
|
||||
"%s, func %p help %s\n", cmd, func, help);
|
||||
"%s, func %px help %s\n", cmd, func, help);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
int kdbgetsymval(const char *symname, kdb_symtab_t *symtab)
|
||||
{
|
||||
if (KDB_DEBUG(AR))
|
||||
kdb_printf("kdbgetsymval: symname=%s, symtab=%p\n", symname,
|
||||
kdb_printf("kdbgetsymval: symname=%s, symtab=%px\n", symname,
|
||||
symtab);
|
||||
memset(symtab, 0, sizeof(*symtab));
|
||||
symtab->sym_start = kallsyms_lookup_name(symname);
|
||||
|
@ -88,7 +88,7 @@ int kdbnearsym(unsigned long addr, kdb_symtab_t *symtab)
|
|||
char *knt1 = NULL;
|
||||
|
||||
if (KDB_DEBUG(AR))
|
||||
kdb_printf("kdbnearsym: addr=0x%lx, symtab=%p\n", addr, symtab);
|
||||
kdb_printf("kdbnearsym: addr=0x%lx, symtab=%px\n", addr, symtab);
|
||||
memset(symtab, 0, sizeof(*symtab));
|
||||
|
||||
if (addr < 4096)
|
||||
|
@ -149,7 +149,7 @@ int kdbnearsym(unsigned long addr, kdb_symtab_t *symtab)
|
|||
symtab->mod_name = "kernel";
|
||||
if (KDB_DEBUG(AR))
|
||||
kdb_printf("kdbnearsym: returns %d symtab->sym_start=0x%lx, "
|
||||
"symtab->mod_name=%p, symtab->sym_name=%p (%s)\n", ret,
|
||||
"symtab->mod_name=%px, symtab->sym_name=%px (%s)\n", ret,
|
||||
symtab->sym_start, symtab->mod_name, symtab->sym_name,
|
||||
symtab->sym_name);
|
||||
|
||||
|
@ -887,13 +887,13 @@ void debug_kusage(void)
|
|||
__func__, dah_first);
|
||||
if (dah_first) {
|
||||
h_used = (struct debug_alloc_header *)debug_alloc_pool;
|
||||
kdb_printf("%s: h_used %p size %d\n", __func__, h_used,
|
||||
kdb_printf("%s: h_used %px size %d\n", __func__, h_used,
|
||||
h_used->size);
|
||||
}
|
||||
do {
|
||||
h_used = (struct debug_alloc_header *)
|
||||
((char *)h_free + dah_overhead + h_free->size);
|
||||
kdb_printf("%s: h_used %p size %d caller %p\n",
|
||||
kdb_printf("%s: h_used %px size %d caller %px\n",
|
||||
__func__, h_used, h_used->size, h_used->caller);
|
||||
h_free = (struct debug_alloc_header *)
|
||||
(debug_alloc_pool + h_free->next);
|
||||
|
@ -902,7 +902,7 @@ void debug_kusage(void)
|
|||
((char *)h_free + dah_overhead + h_free->size);
|
||||
if ((char *)h_used - debug_alloc_pool !=
|
||||
sizeof(debug_alloc_pool_aligned))
|
||||
kdb_printf("%s: h_used %p size %d caller %p\n",
|
||||
kdb_printf("%s: h_used %px size %d caller %px\n",
|
||||
__func__, h_used, h_used->size, h_used->caller);
|
||||
out:
|
||||
spin_unlock(&dap_lock);
|
||||
|
|
Загрузка…
Ссылка в новой задаче