From: Greg Kroah-Hartman Date: Tue, 7 Mar 2023 08:29:41 +0000 (+0100) Subject: 6.1-stable patches X-Git-Tag: v6.2.3~56 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d817dc888672b7fbae155b4566fc3b33f49ef5fb;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: mm-damon-paddr-fix-missing-folio_put.patch --- diff --git a/queue-6.1/mm-damon-paddr-fix-missing-folio_put.patch b/queue-6.1/mm-damon-paddr-fix-missing-folio_put.patch new file mode 100644 index 00000000000..d6c8c373ca1 --- /dev/null +++ b/queue-6.1/mm-damon-paddr-fix-missing-folio_put.patch @@ -0,0 +1,51 @@ +From 3f98c9a62c338bbe06a215c9491e6166ea39bf82 Mon Sep 17 00:00:00 2001 +From: "andrew.yang" +Date: Wed, 22 Feb 2023 14:42:20 +0800 +Subject: mm/damon/paddr: fix missing folio_put() + +From: andrew.yang + +commit 3f98c9a62c338bbe06a215c9491e6166ea39bf82 upstream. + +damon_get_folio() would always increase folio _refcount and +folio_isolate_lru() would increase folio _refcount if the folio's lru flag +is set. + +If an unevictable folio isolated successfully, there will be two more +_refcount. The one from folio_isolate_lru() will be decreased in +folio_puback_lru(), but the other one from damon_get_folio() will be left +behind. This causes a pin page. + +Whatever the case, the _refcount from damon_get_folio() should be +decreased. + +Link: https://lkml.kernel.org/r/20230222064223.6735-1-andrew.yang@mediatek.com +Fixes: 57223ac29584 ("mm/damon/paddr: support the pageout scheme") +Signed-off-by: andrew.yang +Reviewed-by: SeongJae Park +Cc: [5.16.x] +Signed-off-by: Andrew Morton +Signed-off-by: SeongJae Park +Signed-off-by: Greg Kroah-Hartman +--- + mm/damon/paddr.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/mm/damon/paddr.c ++++ b/mm/damon/paddr.c +@@ -219,12 +219,11 @@ static unsigned long damon_pa_pageout(st + put_page(page); + continue; + } +- if (PageUnevictable(page)) { ++ if (PageUnevictable(page)) + putback_lru_page(page); +- } else { ++ else + list_add(&page->lru, &page_list); +- put_page(page); +- } ++ put_page(page); + } + applied = reclaim_pages(&page_list); + cond_resched(); diff --git a/queue-6.1/series b/queue-6.1/series index 1514545b0b9..eabc5f8c853 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -780,3 +780,4 @@ irqdomain-refactor-__irq_domain_alloc_irqs.patch irqdomain-fix-mapping-creation-race.patch irqdomain-fix-domain-registration-race.patch crypto-qat-fix-out-of-bounds-read.patch +mm-damon-paddr-fix-missing-folio_put.patch