On Tue, Dec 19, 2017 at 09:48:49PM +0000, Al Viro wrote: > Well, for example seeing a 0xfffffffffffffff4 where a pointer to object > must have been is a pretty strong hint to start looking for a way for > that ERR_PTR(-ENOMEM) having ended up there... Something like > 0x6e69622f7273752f is almost certainly a misplaced "/usr/bin", i.e. a > pathname overwriting whatever it ends up in, etc. And yes, I have run > into both of those in real life. > > Debugging the situation when crap value has ended up in place of a > pointer is certainly a case where you do want to see what exactly has > ended up in there...
Linus, how would you feel about printing ERR_PTRs without molestation? It's not going to leak any information about the kernel address space layout. I'm a little less certain about trying to detect ASCII strings, but I think this is an improvement. diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 01c3957b2de6..c80c60b4b3ef 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1859,6 +1859,9 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, return string(buf, end, "(null)", spec); } + if (IS_ERR(ptr)) + return pointer_string(buf, end, ptr, spec); + switch (*fmt) { case 'F': case 'f':