On Tue, 25 Jun 2024, David Hildenbrand wrote: > On 25.06.24 21:37, Hugh Dickins wrote: > > On Tue, 25 Jun 2024, David Hildenbrand wrote: > >> > >> I'll point out that it's sufficient for a PFN walker to do a tryget + > >> trylock > >> to cause trouble. > > > > That surprises me. I thought a racer's tryget was irrelevant (touching > > a different field) and its trylock not a problem, since "we" hold the > > folio lock throughout. If my mental model is too naive there, please > > explain in more detail: we all need to understand this better. > > Sorry, I was imprecise. > > tryget+trylock should indeed not be a problem, tryget+lock would be, because > IIRC folio_wait_bit_common()->folio_set_waiters() would be messing with folio > flags. Interesting observation, thanks. I had imagined that a folio locker was safe, but think you're right that (before the fix) this could have erased its PG_waiters. Typically, I guess something else would come along sooner or later to lock the folio, and that succeed in waking up the earlier one: so probably not an issue that would be detected in testing, but not good. Hugh