unsigned long entries[]; /* Variable-sized array of entries. */
};
+static bool stack_depot_disabled;
static bool __stack_depot_early_init_requested __initdata = IS_ENABLED(CONFIG_STACKDEPOT_ALWAYS_INIT);
static bool __stack_depot_early_init_passed __initdata;
static unsigned int stack_hash_order;
static unsigned int stack_hash_mask;
-static bool stack_depot_disable;
static struct stack_record **stack_table;
-static int __init is_stack_depot_disabled(char *str)
+static int __init disable_stack_depot(char *str)
{
int ret;
- ret = kstrtobool(str, &stack_depot_disable);
- if (!ret && stack_depot_disable) {
+ ret = kstrtobool(str, &stack_depot_disabled);
+ if (!ret && stack_depot_disabled) {
pr_info("disabled\n");
stack_table = NULL;
}
return 0;
}
-early_param("stack_depot_disable", is_stack_depot_disabled);
+early_param("stack_depot_disable", disable_stack_depot);
void __init stack_depot_request_early_init(void)
{
if (kasan_enabled() && !stack_hash_order)
stack_hash_order = STACK_HASH_ORDER_MAX;
- if (!__stack_depot_early_init_requested || stack_depot_disable)
+ if (!__stack_depot_early_init_requested || stack_depot_disabled)
return 0;
if (stack_hash_order)
if (!stack_table) {
pr_err("hash table allocation failed, disabling\n");
- stack_depot_disable = true;
+ stack_depot_disabled = true;
return -ENOMEM;
}
int ret = 0;
mutex_lock(&stack_depot_init_mutex);
- if (!stack_depot_disable && !stack_table) {
+ if (!stack_depot_disabled && !stack_table) {
unsigned long entries;
int scale = STACK_HASH_SCALE;
stack_table = kvcalloc(entries, sizeof(struct stack_record *), GFP_KERNEL);
if (!stack_table) {
pr_err("hash table allocation failed, disabling\n");
- stack_depot_disable = true;
+ stack_depot_disabled = true;
ret = -ENOMEM;
}
stack_hash_mask = entries - 1;
*/
nr_entries = filter_irq_stacks(entries, nr_entries);
- if (unlikely(nr_entries == 0) || stack_depot_disable)
+ if (unlikely(nr_entries == 0) || stack_depot_disabled)
goto fast_exit;
hash = hash_stack(entries, nr_entries);