lkml.org 
[lkml]   [2018]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 6/9] lib/vsprintf: Deduplicate pointer_string()
    Date
    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 <me@tobin.cc>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    ---
    lib/vsprintf.c | 27 +++++++--------------------
    1 file 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);
    }

    /*
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-02-16 22:08    [W:4.227 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site