]> git.baikalelectronics.ru Git - kernel.git/commitdiff
vsprintf: Do not preprocess non-dereferenced pointers for bprintf (%px and %pK)
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 3 Apr 2018 18:38:53 +0000 (14:38 -0400)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 6 Apr 2018 12:56:51 +0000 (08:56 -0400)
Commit 841a915d20c7b2 ("printf: Do not have bprintf dereference pointers")
would preprocess various pointers that are dereferenced in the bprintf()
because the recording and printing are done at two different times. Some
pointers stayed dereferenced in the ring buffer because user space could
handle them (namely "%pS" and friends). Pointers that are not dereferenced
should not be processed immediately but instead just saved directly.

Cc: stable@vger.kernel.org
Fixes: 841a915d20c7b2 ("printf: Do not have bprintf dereference pointers")
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
lib/vsprintf.c

index d7a708f82559ca38e768cb93fc0febb999711e4c..89f8a4a4b770d6c5b56c90cbc9ea1d4fd93d5623 100644 (file)
@@ -2591,6 +2591,8 @@ int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args)
                        case 's':
                        case 'F':
                        case 'f':
+                       case 'x':
+                       case 'K':
                                save_arg(void *);
                                break;
                        default:
@@ -2765,6 +2767,8 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
                        case 's':
                        case 'F':
                        case 'f':
+                       case 'x':
+                       case 'K':
                                process = true;
                                break;
                        default: