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