Re: Re: [PATCH v4] pipe: use __pipe_{lock,unlock} instead of spinlock

From: Hongchen Zhang
Date: Thu Feb 02 2023 - 21:25:10 EST


Hi Linus,

On 2023/1/29 下午3:33, Linus Torvalds wrote:
On Sat, Jan 28, 2023 at 10:05 PM Hongchen Zhang
<zhanghongchen@xxxxxxxxxxx> wrote:

Use spinlock in pipe_{read,write} cost too much time,IMO
pipe->{head,tail} can be protected by __pipe_{lock,unlock}.
On the other hand, we can use __pipe_{lock,unlock} to protect
the pipe->{head,tail} in pipe_resize_ring and
post_one_notification.

No, we really can't.

post_one_notification() is called under the RCU lock held, *and* with
a spinlock held.

It simply cannot do a sleeping lock like __pipe_lock().

So that patch is simply fundamentally buggy, I'm afraid.

Linus

Thanks for your review,Let me find out if there is any way to solve the
problem you said.

Best Regards
Hongchen Zhang