On Tue, Oct 10, 2017 at 09:56:26AM -0700, Linus Torvalds wrote: > So I think the best model would be something like this: > > - T1: > mutex_lock(&lock) > ... > mutex_transfer(&lock) > > - T2: > mutex_receive(&lock); > ... > mutex_unlock(&lock); > > where the "mutex_transfer() -> mutex_receive()" thing really makes it > obvious that "now thread 1 is transferring the lock to thread 2".
Ah, but that's not at all what cross-release is about. Nobody really does wonky ownership transfer of mutexes like that (although there might be someone doing something with semaphores, I didn't check). Its to allow detecting this deadlock: mutex_lock(&lock) wait_for_completion(&c); mutex_lock(&lock); complete(&c); The completion doesn't have an owner to transfer.