Re: [PATCH 04/12] bcache: Don't reinvent the wheel but use existing llist API

Coly Li
2017-09-26T07:46:10Z

On 2017/9/26 下午12:38, Michael Lyle wrote:
> I believe this introduces a critical bug.
>
> cl->list is used to link together the llists for both things waiting,
> and for things that are being woken.
>
> If a closure that is woken decides to wait again, it will corrupt the
> llist that __closure_wake_up is using.
>
> The previous iteration structure gets the next element of the list
> before waking and is therefore safe.

Hi Michael and Byungchul,

This is my fault to suggest Byungchul to change his correct patch into
wrong one. But it's good to learn such an implicit race behind bcache
code. I just post a patch to explain how this race may happen and
corrupt the reverse list iteration. Could you please to review the fix ?

And thanks to Michael again to catch this bug.

--
Coly Li