On Sat, Aug 19, 2023 at 11:28:58AM +0800, Hongchen Zhang wrote: > Hi David, > > On 2023/8/14 pm 4:47, David Howells wrote: > > Hongchen Zhang <zhanghongchen@xxxxxxxxxxx> wrote: > > > > > - spin_lock_irq(&pipe->rd_wait.lock); > > > + __pipe_lock(pipe); > > > I changed the code and the post_one_notification is not called inside spin > lock ,please check this patch again. In remove_watch_from_object(), you moved post_one_notification() before lock_queue(), but it's still called inside a RCU read-side critical section, which cannot sleep. Please test with CONFIG_DEBUG_ATOMIC_SLEEP before you send a new version. You should probably turn on DEBUG_SPINLOCK, LOCKDEP, DEBUG_MUTEXES and a few other debug options.