On Sat, Feb 17, 2024 at 04:20:20PM +0000, Zeng, Xin wrote: > Thanks for this information, but this flow is not clear to me why it > cause deadlock. From this flow, CPU0 is not waiting for any resource > held by CPU1, so after CPU0 releases mmap_lock, CPU1 can continue > to run. Am I missing something? At some point it was calling copy_to_user() under the state mutex. These days it doesn't. copy_to_user() would nest the mm_lock under the state mutex which is a locking inversion. So I wonder if we still have this problem now that the copy_to_user() is not under the mutex? Jason