Re: [PATCH 00/14] Fix wrong %pF and %pS printk format specifier usages
From: Sergey Senozhatsky
Date: Thu Sep 07 2017 - 05:54:14 EST
On (09/07/17 18:36), Sergey Senozhatsky wrote:
[..]
> > I can look into adding such check-code, but even then the warning will
> > only show up if you run on ia64, ppc64 and parisc64.
sorry, not sure I understand the "warning" part.
what I'm thinking about is:
- every platform that needs descriptor dereference defines its own
function. otherwise dereference_descriptor(p) is just (p).
- so it's something like
arch/platform_abc/include/asm/sections.h
#undef dereference_function_descriptor
static inline void *dereference_function_descriptor(void *ptr)
{
if (not_a_function_descriptor(ptr))
return ptr;
if (!probe_kernel_address(....))
return function_ip;
return ptr;
}
- so then in lib/vsprintf.c we can do unconditionally
case F:
case f:
case S:
case s:
case B:
ptr = dereference_function_descriptor(ptr);
return symbol_string(....);
because platforms will take care of proper descriptor dereference,
when needed.
- and ideally we even can drop %pF-%pf. because there won't
be any difference between `S' and `F'.
something like this.
let's see if this is possible.
any thoughts?
-ss