Re: [PATCH v7 08/13] lib/vsprintf: Remove support for %pF and %pf in favour of %pS and %ps

Petr Mladek
2019-09-24T10:38:34Z

On Wed 2019-09-18 16:34:14, Sakari Ailus wrote:
> %pS and %ps are now the preferred conversion specifiers to print function
> names. The functionality is equivalent; remove the old, deprecated %pF
> and %pf support.
>
> --- a/lib/vsprintf.c
> +++ b/lib/vsprintf.c
> @@ -909,7 +909,7 @@ char *symbol_string(char *buf, char *end, void *ptr,
> #ifdef CONFIG_KALLSYMS
> if (*fmt == 'B')
> sprint_backtrace(sym, value);
> - else if (*fmt != 'f' && *fmt != 's')
> + else if (*fmt != 's')
> sprint_symbol(sym, value);
> else
> sprint_symbol_no_offset(sym, value);
> @@ -2007,9 +2007,7 @@ static char *kobject_string(char *buf, char *end, void *ptr,
> *
> * - 'S' For symbolic direct pointers (or function descriptors) with offset
> * - 's' For symbolic direct pointers (or function descriptors) without offset
> - * - 'F' Same as 'S'
> - * - 'f' Same as 's'
> - * - '[FfSs]R' as above with __builtin_extract_return_addr() translation
> + * - '[Ss]R' as above with __builtin_extract_return_addr() translation
> * - 'B' For backtraced symbolic direct pointers with offset
> * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
> * - 'r' For raw struct resource, e.g., [mem 0x0-0x1f flags 0x201]
> @@ -2112,8 +2110,6 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
> struct printf_spec spec)
> {
> switch (*fmt) {
> - case 'F':
> - case 'f':
> case 'S':
> case 's':
> ptr = dereference_symbol_descriptor(ptr);

IMHO, we should do the same also in vbin_printf().

The compatibility with traceevent tools was discussed in the thread
https://lkml.kernel.org/r/20190910084707.18380-2-sakari.ailus@linux.intel.com

If I understand it correctly the tools should be able to handle stored
'f' and 'F' modifiers because they might be produced by
older kernels. But new kernels should not longer produce them.

Otherwise the patch looks good to me. I am getting used to the fact
that we will remove the obsolete specifiers completely.

Best Regards,
Petr