On Mon, Sep 11, 2023 at 02:00:52PM -0700, Andrew Morton wrote: > > The patch titled > Subject: mm: page_alloc: free pages to correct buddy list after PCP lock contention > has been added to the -mm mm-hotfixes-unstable branch. Its filename is > mm-page_alloc-free-pages-to-correct-buddy-list-after-pcp-lock-contention.patch > > This patch will shortly appear at > https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-page_alloc-free-pages-to-correct-buddy-list-after-pcp-lock-contention.patch > > This patch will later appear in the mm-hotfixes-unstable branch at > git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm > > Before you just go and hit "reply", please: > a) Consider who else should be cc'ed > b) Prefer to cc a suitable mailing list as well > c) Ideally: find the original patch on the mailing list and do a > reply-to-all to that, adding suitable additional cc's > > *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** > > The -mm tree is included into linux-next via the mm-everything > branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm > and is updated there every 2-3 working days > > ------------------------------------------------------ > From: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Subject: mm: page_alloc: free pages to correct buddy list after PCP lock contention > Date: Tue, 5 Sep 2023 10:09:22 +0100 > > Commit 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock") > returns pages to the buddy list on PCP lock contention. However, for > migratetypes that are not MIGRATE_PCPTYPES, the migratetype may have > been clobbered already for pages that are not being isolated. In > practice, this means that CMA pages may be returned to the wrong > buddy list. While this might be harmless in some cases as it is > MIGRATE_MOVABLE, the pageblock could be reassigned in rmqueue_fallback > and prevent a future CMA allocation. Lookup the PCP migratetype > against unconditionally if the PCP lock is contended. > > [lecopzer.chen@xxxxxxxxxxxx: CMA-specific fix] > Link: https://lkml.kernel.org/r/20230905090922.zy7srh33rg5c3zao@xxxxxxxxxxxxxxxxxxx > Fixes: 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock") > Signed-off-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Reported-by: Joe Liu <joe.liu@xxxxxxxxxxxx> > Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> This patch is superseded by the following patch you picked up: mm-page_alloc-fix-cma-and-highatomic-landing-on-the-wrong-buddy-list.patch If you drop this patch here, you can also drop the fixlet to free_unref_page(). The branch in there should look like this: if (pcp) free_unref_page_commit(..., pcpmigratetype, ...); else free_one_page(..., migratetype, ...);