[lkml]   [2018]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH] vsprintf: avoid misleading "(null)" for %px
On Wed 2018-02-07 16:11:13, Geert Uytterhoeven wrote:
> Hi Petr,
> On Wed, Feb 7, 2018 at 4:03 PM, Petr Mladek <> wrote:
> > [*] I made some archaeology:
> >
> > The "(null)" string was added by the commit d97106ab53f812910
> > ("Make %p print '(null)' for NULL pointers").
> >
> > It was a generic solution to prevent eventual crashes, see
> >
> >
> > From this point, printing 00000000 for %px looks perfectly fine because
> > it does not crash.
> >
> > In fact, it would have made perfect sense to print 00000000 for pure
> > %p because it did not crash. But nobody has cared about the eventual
> > confusion yet.
> >
> > I am not sure if it makes sense to change the pure %p handling
> > now. Note that printing "(null)" has the advantage that we
> > get this string instead of the hash ;-)
> Note that "(null)" is also used for printing strings, where you do dereference
> the pointer, unlike for printing pointers.
> In addition, "(null)" for strings is not just printed for real NULL
> pointers, but
> also for anything pointing within the first page of virtual memory.

We are on the safe side. "(null)" for "%s" is handled
separately, see string() function in lib/vsprintf.c.

To make it clear. I was talking about "%p" format that is handled
in the pointer() function in lib/vsprintf.c. The "(null)" makes
sense only for the many modifiers that do deference of
the pointer, e.g. "%pa", "%pE", "%ph". It makes less sense
for the pure "%p" used without any modifier. Well, it actually
started to makes some sense after we started printing
the hash instead of the real pointer value.

Best Regards,

 \ /
  Last update: 2018-02-07 16:42    [W:0.063 / U:34.904 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site