On (03/14/18 15:09), Petr Mladek wrote:
[..]
> +static const char *check_pointer_access(const void *ptr)
> +{
> +     unsigned char byte;
> +
> +     if (!ptr)
> +             return "(null)";
> +
> +     if (probe_kernel_read(&byte, ptr, 1))
                                        ^^^^^
Why one byte?                        sizeof(ptr)?

[..]
>  char *pointer(const char *fmt, char *buf, char *end, void *ptr,
>             struct printf_spec spec)
>  {
> +     static const char data_access_fmt[] = "RrhbMmIiEUVNadCDgGO";
>       const int default_width = 2 * sizeof(void *);
> +     const char *err_msg = NULL;
> +
> +     /* Prevent silent crash when this is called under logbuf_lock. */
> +     if (*fmt && strchr(data_access_fmt, *fmt) != NULL)
> +             err_msg = check_pointer_access(ptr);

Agree with Rasmus, I think switch() is easier.

        -ss

Reply via email to