Messages in this thread | | | Date | Mon, 5 Feb 2018 16:22:19 +0100 | From | Adam Borowski <> | Subject | Re: [PATCH] vsprintf: avoid misleading "(null)" for %px |
| |
On Mon, Feb 05, 2018 at 09:03:05PM +1100, Tobin C. Harding wrote: > On Mon, Feb 05, 2018 at 10:44:38AM +0100, Petr Mladek wrote: > > On Sun 2018-02-04 18:45:21, Adam Borowski wrote: > > > Like %pK already does, print "00000000" instead. > > > > > > This confused people -- the convention is that "(null)" means you tried to > > > dereference a null pointer as opposed to printing the address. > > > > By other words, this avoids regressions when people convert > > %x to %px. Do I get it right, please?
It's a regression in the sense that it confuses people. %px never could dereference a pointer so the information provided doesn't change, merely its presentation.
> > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > > > index 77ee6ced11b1..d7a708f82559 100644 > > > --- a/lib/vsprintf.c > > > +++ b/lib/vsprintf.c > > > @@ -1849,7 +1849,7 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, > > > { > > > const int default_width = 2 * sizeof(void *); > > > > > > - if (!ptr && *fmt != 'K') { > > > + if (!ptr && *fmt != 'K' && *fmt != 'x') { > > I don't know if it matters but with this it won't be immediately > apparent that a null pointer was printed (since zero could hash to > anything).
My change touches %px only, where your concern doesn't apply.
You're right, though, when it comes to %pK: printk("%%pK: %pK, %%px: %px\n", 0, 0); says %pK: 00000000ba8bdc0a, %px: 0000000000000000
So what should we do? Avoid hashing 0? Print a special value?
Meow! -- ⢀⣴⠾⠻⢶⣦⠀ The bill with 3 years prison for mentioning Polish concentration ⣾⠁⢰⠒⠀⣿⡁ camps is back. What about KL Warschau (operating until 1956)? ⢿⡄⠘⠷⠚⠋⠀ Zgoda? Łambinowice? Most ex-German KLs? If those were "soviet ⠈⠳⣄⠀⠀⠀⠀ puppets", Bereza Kartuska? Sikorski's camps in UK (thanks Brits!)?
| |