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

Reply via email to