}
static noinline_for_stack
-char *pointer_string(char *buf, char *end, const void *ptr,
- struct printf_spec spec)
+char *pointer_string(struct printf_state *ps, const void *ptr)
{
- spec.base = 16;
- spec.flags |= SMALL;
- if (spec.field_width == -1) {
- spec.field_width = 2 * sizeof(ptr);
- spec.flags |= ZEROPAD;
+ ps->spec.base = 16;
+ ps->spec.flags |= SMALL;
+ if (ps->spec.field_width == -1) {
+ ps->spec.field_width = 2 * sizeof(ptr);
+ ps->spec.flags |= ZEROPAD;
}
- return number(buf, end, (unsigned long int)ptr, spec);
+ printf_number(ps, (unsigned long int)ptr);
+ return ps->buf;
}
/* Make pointers available for printing early in the boot sequence. */
/* When debugging early boot use non-cryptographically secure hash. */
if (unlikely(debug_boot_weak_hash)) {
hashval = hash_long((unsigned long)ptr, 32);
- return pointer_string(ps->buf, ps->end, (const void *)hashval,
- ps->spec);
+ return pointer_string(ps, (const void *)hashval);
}
if (static_branch_unlikely(¬_filled_random_ptr_key)) {
#else
hashval = (unsigned long)siphash_1u32((u32)ptr, &ptr_key);
#endif
- return pointer_string(ps->buf, ps->end, (const void *)hashval,
- ps->spec);
+ return pointer_string(ps, (const void *)hashval);
}
static noinline_for_stack
break;
}
- return pointer_string(ps->buf, ps->end, ptr, ps->spec);
+ return pointer_string(ps, ptr);
}
static noinline_for_stack
}
break;
case 'x':
- return pointer_string(buf, end, ptr, spec);
+ return pointer_string(ps, ptr);
}
/* default is to _not_ leak addresses, hash before printing */