On Thu, Dec 03, 2020 at 02:15:36PM -0500, Pavel Tatashin wrote: > I studied some more, and I think this is not a race: > list_add_tail(&head->lru, &cma_page_list) is called only when > isolate_lru_page(head) succeeds. > isolate_lru_page(head) succeeds only when PageLRU(head) is true. > However, in this function we also clear LRU flag before returning > success. > This means, that if we race with another thread, the other thread > won't get to unprotected list_add_tail(&head->lru, &cma_page_list) > until head is is back on LRU list. Oh interesting, I totally didn't see how that LRU stuff is working. So.. this creates a ridiculously expensive spin lock? Not broken, but yikes :| Jason