diff options
author | Andy Shevchenko <[email protected]> | 2018-02-16 23:07:08 +0200 |
---|---|---|
committer | Petr Mladek <[email protected]> | 2018-04-11 11:17:06 +0200 |
commit | 496a9a5f3806d58b14ae06b390d5b1ffa26e9f9a (patch) | |
tree | 5a014fee0ce70533d43238c06a9daff3afe4cb57 | |
parent | 558594f3c2a5cd65f18b976faf68143c502b73b2 (diff) |
lib/vsprintf: Deduplicate pointer_string()
There is an exact code at the end of ptr_to_id().
Replace it by calling pointer_string() directly.
This is followup to the commit ad67b74d2469 ("printk: hash addresses
printed with %p").
Cc: Tobin C. Harding <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
To: "Tobin C . Harding" <[email protected]>
To: [email protected]
To: Joe Perches <[email protected]>
To: [email protected]
To: Andrew Morton <[email protected]>
Signed-off-by: Andy Shevchenko <[email protected]>
Signed-off-by: Petr Mladek <[email protected]>
-rw-r--r-- | lib/vsprintf.c | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 87dbced51b1a..9004bbb3d84d 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1367,13 +1367,6 @@ static noinline_for_stack char *restricted_pointer(char *buf, char *end, const void *ptr, struct printf_spec spec) { - spec.base = 16; - spec.flags |= SMALL; - if (spec.field_width == -1) { - spec.field_width = 2 * sizeof(ptr); - spec.flags |= ZEROPAD; - } - switch (kptr_restrict) { case 0: /* Always print %pK values */ @@ -1385,8 +1378,11 @@ char *restricted_pointer(char *buf, char *end, const void *ptr, * kptr_restrict==1 cannot be used in IRQ context * because its test for CAP_SYSLOG would be meaningless. */ - if (in_irq() || in_serving_softirq() || in_nmi()) + if (in_irq() || in_serving_softirq() || in_nmi()) { + if (spec.field_width == -1) + spec.field_width = 2 * sizeof(ptr); return string(buf, end, "pK-error", spec); + } /* * Only print the real pointer value if the current @@ -1411,7 +1407,7 @@ char *restricted_pointer(char *buf, char *end, const void *ptr, break; } - return number(buf, end, (unsigned long)ptr, spec); + return pointer_string(buf, end, ptr, spec); } static noinline_for_stack @@ -1686,10 +1682,9 @@ early_initcall(initialize_ptr_random); static char *ptr_to_id(char *buf, char *end, void *ptr, struct printf_spec spec) { unsigned long hashval; - const int default_width = 2 * sizeof(ptr); if (unlikely(!have_filled_random_ptr_key)) { - spec.field_width = default_width; + spec.field_width = 2 * sizeof(ptr); /* string length must be less than default_width */ return string(buf, end, "(ptrval)", spec); } @@ -1704,15 +1699,7 @@ static char *ptr_to_id(char *buf, char *end, void *ptr, struct printf_spec spec) #else hashval = (unsigned long)siphash_1u32((u32)ptr, &ptr_key); #endif - - spec.flags |= SMALL; - if (spec.field_width == -1) { - spec.field_width = default_width; - spec.flags |= ZEROPAD; - } - spec.base = 16; - - return number(buf, end, hashval, spec); + return pointer_string(buf, end, (const void *)hashval, spec); } /* |