__sprint_symbol() is supposed to resolve the passed address to a symbol
name. If the symbol can not be resolved it will print the actual pointer
that was passed. The pointer policy is to not reveal actual pointer
values. However for post-mortem analysis of crashes it is helpful to see
the raw pointer if it is a corrupted pointer.

Document why raw unresolved pointers are printed.

Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
---
 kernel/kallsyms.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
index aec2f06858afd..983eae8d66f88 100644
--- a/kernel/kallsyms.c
+++ b/kernel/kallsyms.c
@@ -482,8 +482,13 @@ static int __sprint_symbol(char *buffer, unsigned long 
address,
        address += symbol_offset;
        len = kallsyms_lookup_buildid(address, &size, &offset, &modname, 
&buildid,
                                       buffer);
-       if (!len)
+       if (!len) {
+               /*
+                * Print the raw pointer to allow post-mortem analysis of 
corrupted
+                * pointer in backtraces.
+                */
                return sprintf(buffer, "0x%lx", address - symbol_offset);
+       }
 
        offset -= symbol_offset;
 
-- 
2.55.0


Reply via email to