> -----Original Message----- > From: Michael Lyle [mailto:mlyle@xxxxxxxx] > Sent: Tuesday, September 26, 2017 1:38 PM > To: Coly Li > Cc: linux-bcache@xxxxxxxxxxxxxxx; linux-block@xxxxxxxxxxxxxxx; > axboe@xxxxxxxxx; Eric Wheeler; Byungchul Park; Kent Overstreet > Subject: Re: [PATCH 04/12] bcache: Don't reinvent the wheel but use existing > llist API > > 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. Do you mean we have to use llist_for_each_entry_safe() instead of non-safe version? Is it ok if we use it instead? > Mike