]> www.infradead.org Git - users/willy/linux.git/commitdiff
printf: Convert symbol_string to printf_state
authorMatthew Wilcox <willy@infradead.org>
Wed, 12 Dec 2018 19:11:23 +0000 (14:11 -0500)
committerMatthew Wilcox <willy@infradead.org>
Wed, 12 Dec 2018 19:11:23 +0000 (14:11 -0500)
Signed-off-by: Matthew Wilcox <willy@infradead.org>
lib/vsprintf.c

index 7fadfd514e9f52e2bf50c6eda6bf5315734496cd..0d62ad5093c8f2f86cba0f78ed5a54957367f62a 100644 (file)
@@ -785,29 +785,29 @@ char *bdev_name(struct printf_state *ps, struct block_device *bdev)
 #endif
 
 static noinline_for_stack
-char *symbol_string(char *buf, char *end, void *ptr,
-                   struct printf_spec spec, const char *fmt)
+char *symbol_string(struct printf_state *ps, void *ptr)
 {
        unsigned long value;
 #ifdef CONFIG_KALLSYMS
        char sym[KSYM_SYMBOL_LEN];
 #endif
 
-       if (fmt[1] == 'R')
+       if (ps->fmt[1] == 'R')
                ptr = __builtin_extract_return_addr(ptr);
        value = (unsigned long)ptr;
 
 #ifdef CONFIG_KALLSYMS
-       if (*fmt == 'B')
+       if (*ps->fmt == 'B')
                sprint_backtrace(sym, value);
-       else if (*fmt != 'f' && *fmt != 's')
+       else if (*ps->fmt != 'f' && *ps->fmt != 's')
                sprint_symbol(sym, value);
        else
                sprint_symbol_no_offset(sym, value);
 
-       return string(buf, end, sym, spec);
+       printf_string(ps, sym);
+       return ps->buf;
 #else
-       return special_hex_number(buf, end, value, sizeof(void *));
+       return special_hex_number(ps->buf, ps->end, value, sizeof(void *));
 #endif
 }
 
@@ -1888,7 +1888,7 @@ char *pointer(struct printf_state *ps, void *ptr)
                ptr = dereference_symbol_descriptor(ptr);
                /* Fallthrough */
        case 'B':
-               return symbol_string(buf, end, ptr, spec, fmt);
+               return symbol_string(ps, ptr);
        case 'R':
        case 'r':
                return resource_string(buf, end, ptr, spec, fmt);