Messages in this thread | | | Date | Thu, 7 Sep 2017 18:51:19 +0900 | From | Sergey Senozhatsky <> | Subject | Re: [PATCH 00/14] Fix wrong %pF and %pS printk format specifier usages |
| |
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
| |