Re: [PATCH] kdb: use correct pointer when 'btc' calls 'btt'
From: Christophe LEROY
Date: Wed Sep 26 2018 - 07:19:26 EST
Le 26/09/2018 Ã 13:11, Daniel Thompson a ÃcritÂ:
On 16/09/2018 20:06, Daniel Thompson wrote:
On Fri, Sep 14, 2018 at 12:35:44PM +0000, Christophe Leroy wrote:
On a powerpc 8xx, 'btc' fails as follows:
Entering kdb (current=0x(ptrval), pid 282) due to Keyboard Entry
kdb> btc
btc: cpu status: Currently on cpu 0
Available cpus: 0
kdb_getarea: Bad address 0x0
when booting the kernel with 'debug_boot_weak_hash', it fails as well
Entering kdb (current=0xba99ad80, pid 284) due to Keyboard Entry
kdb> btc
btc: cpu status: Currently on cpu 0
Available cpus: 0
kdb_getarea: Bad address 0xba99ad80
On other platforms, Oopses have been observed too, see
https://github.com/linuxppc/linux/issues/139
This is due to btc calling 'btt' with %p pointer as an argument.
This patch replaces %p by %px to get the real pointer value as
expected by 'btt'
Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxx>
Cc: <stable@xxxxxxxxxxxxxxx> # 4.15+
Would a Fixes: be better here?
Fixes: ad67b74d2469d9b82 ("printk: hash addresses printed with %p")
Christophe, When you add the Fixes: could you also add my
Reviewed-by: Daniel Thompson <daniel.thompson@xxxxxxxxxx>
Ok, thanks for the review, but do I have to do anything really ?
The Fixes: and now your Reviewed-by: appear automatically in patchwork
(https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=65715),
so I believe they'll be automatically included when Jason or someone
else takes the patch, no ?
Christophe
Thanks.
No blame attached to Tobin, but the fixes makes it super clear what
changed and why this breaks kdb (which was not explicitly called out
the patch description).
Daniel.
---
 kernel/debug/kdb/kdb_bt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/debug/kdb/kdb_bt.c b/kernel/debug/kdb/kdb_bt.c
index 6ad4a9fcbd6f..7921ae4fca8d 100644
--- a/kernel/debug/kdb/kdb_bt.c
+++ b/kernel/debug/kdb/kdb_bt.c
@@ -179,14 +179,14 @@ kdb_bt(int argc, const char **argv)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ kdb_printf("no process for cpu %ld\n", cpu);
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ return 0;
ÂÂÂÂÂÂÂÂÂÂÂÂÂ }
-ÂÂÂÂÂÂÂÂÂÂÂ sprintf(buf, "btt 0x%p\n", KDB_TSK(cpu));
+ÂÂÂÂÂÂÂÂÂÂÂ sprintf(buf, "btt 0x%px\n", KDB_TSK(cpu));
ÂÂÂÂÂÂÂÂÂÂÂÂÂ kdb_parse(buf);
ÂÂÂÂÂÂÂÂÂÂÂÂÂ return 0;
ÂÂÂÂÂÂÂÂÂ }
ÂÂÂÂÂÂÂÂÂ kdb_printf("btc: cpu status: ");
ÂÂÂÂÂÂÂÂÂ kdb_parse("cpu\n");
ÂÂÂÂÂÂÂÂÂ for_each_online_cpu(cpu) {
-ÂÂÂÂÂÂÂÂÂÂÂ sprintf(buf, "btt 0x%p\n", KDB_TSK(cpu));
+ÂÂÂÂÂÂÂÂÂÂÂ sprintf(buf, "btt 0x%px\n", KDB_TSK(cpu));
ÂÂÂÂÂÂÂÂÂÂÂÂÂ kdb_parse(buf);
ÂÂÂÂÂÂÂÂÂÂÂÂÂ touch_nmi_watchdog();
ÂÂÂÂÂÂÂÂÂ }
--
2.13.3