mm/damon/paddr: fix folio_nr_pages() after folio_put() in damon_pa_mark_accessed_or_d...
authorSeongJae Park <sj@kernel.org>
Sat, 4 Mar 2023 19:39:49 +0000 (19:39 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 8 Mar 2023 01:04:55 +0000 (17:04 -0800)
damon_pa_mark_accessed_or_deactivate() is accessing a folio via
folio_nr_pages() after folio_put() for the folio has invoked.  Fix it.

Link: https://lkml.kernel.org/r/20230304193949.296391-3-sj@kernel.org
Fixes: f70da5ee8fe1 ("mm/damon: convert damon_pa_mark_accessed_or_deactivate() to use folios")
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/paddr.c

index 49b267b033050c057b73a9af7667db98ecd162e2..dd9c33fbe805273f32fbc518356d722bacf4e09b 100644 (file)
@@ -280,8 +280,8 @@ static inline unsigned long damon_pa_mark_accessed_or_deactivate(
                        folio_mark_accessed(folio);
                else
                        folio_deactivate(folio);
-               folio_put(folio);
                applied += folio_nr_pages(folio);
+               folio_put(folio);
        }
        return applied * PAGE_SIZE;
 }