On Tue, 12 Jun 2018 10:39:14 +1000 "Tobin C. Harding" <m...@tobin.cc> wrote:
> +/* Make pointers available for printing early in the boot sequence. */ > +static int debug_boot_weak_hash __ro_after_init; > +EXPORT_SYMBOL(debug_boot_weak_hash); > + > +static int __init debug_boot_weak_hash_enable(char *str) > +{ > + debug_boot_weak_hash = 1; > + pr_info("debug_boot_weak_hash enabled\n"); > + return 0; > +} > +early_param("debug_boot_weak_hash", debug_boot_weak_hash_enable); > + > static DEFINE_STATIC_KEY_TRUE(not_filled_random_ptr_key); > static siphash_key_t ptr_key __read_mostly; > > @@ -1703,6 +1715,12 @@ static char *ptr_to_id(char *buf, char *end, void > *ptr, struct printf_spec spec) > const char *str = sizeof(ptr) == 8 ? "(____ptrval____)" : "(ptrval)"; > unsigned long hashval; > > + /* When debugging early boot use non-cryptographically secure hash */ > + if (unlikely(debug_boot_weak_hash)) { I was hoping to find a way to make the debug_boot_weak_hash into a static_branch, but its setting is too early to have for a jump label. I toyed with nesting this inside a static_branch too, but it seems too much overkill. Hence, I'll just punt and accept this patch as is ;-) Reviewed-by: Steven Rostedt (VMware) <rost...@goodmis.org> -- Steve > + hashval = hash_long((unsigned long)ptr, 32); > + return pointer_string(buf, end, (const void *)hashval, spec); > + } > + > if (static_branch_unlikely(¬_filled_random_ptr_key)) { > spec.field_width = 2 * sizeof(ptr); > /* string length must be less than default_width */