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