From 718da042d1205919bd7a10e23ecef5311e886dff Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Wed, 17 May 2023 09:40:15 -0700 Subject: [PATCH] ANDROID: retry page allocation from buddy on lock contention spin_trylock may fail due to a parallel drain in rmqueue_pcplist. In the case, it should retry to allocate with buddy. It matches with upstream policy. Fixes: 433445e9a160 ("ANDROID: mm: add cma pcp list") Change-Id: I07367888d7ede38e09f9d882fc2485baa175fe64 Signed-off-by: Minchan Kim --- mm/page_alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 104003f72893..f0cfac80ca10 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3915,7 +3915,8 @@ struct page *rmqueue(struct zone *preferred_zone, if (likely(pcp_allowed_order(order))) { page = rmqueue_pcplist(preferred_zone, zone, order, migratetype, alloc_flags); - goto out; + if (likely(page)) + goto out; } page = rmqueue_buddy(preferred_zone, zone, order, alloc_flags,