On Thu, Oct 01, 2020 at 10:16:35PM +0200, Jann Horn wrote: > > A subclass isn't right, it has to be a _nested annotation. > > > > nested locking is a pretty good reason to not be able to do this, this > > is something lockdep does struggle to model. > > Did I get the terminology wrong? I thought they were the same. The > down_*_nested() APIs take an argument "subclass", with the default > subclass for the functions without "_nested" being 0.
AFAIK a subclass at init time sticks with the lock forever, the _nested ones are temporary overrides. I think what you kind of want is to start out with lockdep_set_novalidate_class() then switch to a real class once things are finished. Not sure exactly how :) Jason