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