Re: [PATCH v5 10/11] vsprintf: WARN() on invalid pointer access

From: Sergey Senozhatsky
Date: Wed Apr 25 2018 - 21:28:18 EST


On (04/25/18 13:12), Petr Mladek wrote:
[..]
> /*
> * This is not a fool-proof test. 99% of the time that this will fault is
> * due to a bad pointer, not one that crosses into bad memory. Just test
> @@ -623,8 +626,12 @@ static const char *check_pointer_access(const void *ptr)
> if (!ptr)
> return "(null)";
>
> - if (probe_kernel_address(ptr, byte))
> + /* Prevent silent crashes when called in printk_safe context. */
> + if (probe_kernel_address(ptr, byte)) {
> + WARN(!panic_on_warn && !test_printf_pointer_access,
> + "vsprintf: invalid pointer address\n");
> return "(efault)";
> + }

Can we have a rate-limited print out here? Or may be even a WARN_ONCE()?
Yes, printk()-s from check_pointer_access() are OK, printk_safe() helps us,
but at the same time every single invalid pointer access printk()-message
will log_store() WARN() extra entries. Theoretically, this can harm. What
do you think?

-ss