On Wed, Jan 15, 2020 at 02:03:22PM -0500, Waiman Long wrote: > >> (1) no unlocking by another process than the one that acquired it > >> (2) no return to userspace with locks held > > As an example flow: obtain the read side lock, schedual a work queue, > > return to user space, and unlock the read side from the work queue. > > We currently have down_read_non_owner() and up_read_non_owner() that > perform the lock and unlock without lockdep tracking. Of course, that is > a hack and their use must be carefully scrutinized to make sure that > there is no deadlock or other potentially locking issues. That doesn't help with returning to userspace while the lock is held.