提交 1e6338cf 编写于 作者: S Steven Rostedt (VMware)

vsprintf: Do not preprocess non-dereferenced pointers for bprintf (%px and %pK)

Commit 841a915d ("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: 841a915d ("printf: Do not have bprintf dereference pointers")
Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
上级 b28d7b2d
......@@ -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:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册