On Thu, Nov 08, 2018 at 03:34:18PM -0500, Waiman Long wrote: > A terminal lock is a lock where further locking or unlocking on another > lock is not allowed. IOW, no forward dependency is permitted. > > With such a restriction in place, we don't really need to do a full > validation of the lock chain involving a terminal lock. Instead, > we just check if there is any further locking or unlocking on another > lock when a terminal lock is being held. > @@ -263,6 +270,7 @@ struct held_lock { > unsigned int hardirqs_off:1; > unsigned int references:12; /* 32 bits */ > unsigned int pin_count; > + unsigned int flags; > }; I'm thinking we can easily steal some bits off of the pin_count field if we have to.