Re: [PATCH v5 07/15] locking/lockdep: Free lock classes that are no longer in use

From: Peter Zijlstra
Date: Thu Jan 10 2019 - 10:28:11 EST


On Mon, Dec 17, 2018 at 01:29:54PM -0800, Bart Van Assche wrote:
> +static bool inside_selftest(void)
> +{
> + return current == lockdep_selftest_task_struct;
> +}

> +void lockdep_free_key_range(void *start, unsigned long size)
> +{
> + init_data_structures_once();
> +
> + if (inside_selftest())
> + lockdep_free_key_range_imm(start, size);
> + else
> + lockdep_free_key_range_reg(start, size);
> }

That is .... unfortunate. The whole reason that whole immediate thing
works at all is because there is no concurrency what so ever that early,
right?

Should we maybe key off of: 'system_state == SYSTEM_BOOTING' instead?