On Fri 2026-08-21 17:26:13, Sebastian Andrzej Siewior wrote:
> The "%ps" format modifier prints the name of the symbol which is more
> valuable in terms of debugging and does not leak the actual pointer.
>
> Without KALLSYMS it will leak the pointer which is not intended. The
> default policy for pointers is to print a hashed value and not to leak
> the actual pointer.
>
> For !KALLSYMS, print "(unknown)" for any symbol resolution. If hashed
> pointer are disabled print the bare number.
>
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
> lib/vsprintf.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> index 2bc6ef483576c..fcb63f22b1997 100644
> --- a/lib/vsprintf.c
> +++ b/lib/vsprintf.c
> @@ -1008,7 +1008,9 @@ char *symbol_string(char *buf, char *end, void *ptr,
>
> return string_nocheck(buf, end, sym, spec);
> #else
> - return special_hex_number(buf, end, value, sizeof(void *));
> + if (unlikely(no_hash_pointers))
> + return special_hex_number(buf, end, value, sizeof(void *));
> + return string_nocheck(buf, end, "(unknown)", spec);
> #endif
> }
My understanding was that we were going to use
return default_pointer(buf, end, ptr, spec);
It would print the hashed pointer unless no_hash_pointers was set.
IMHO, it would make the handling of pointer values more consistent.
Best Regards,
Petr