Messages in this thread | | | Date | Sat, 19 Aug 2023 04:53:03 +0100 | From | Matthew Wilcox <> | Subject | Re: [PATCH v5 2/2] pipe: use __pipe_{lock,unlock} instead of spinlock |
| |
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@loongson.cn> 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.
| |