]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mm/vmscan: take all base pages of THP into account when race with speculative reference
authorMiaohe Lin <linmiaohe@huawei.com>
Fri, 13 May 2022 03:23:00 +0000 (20:23 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 13 May 2022 14:20:14 +0000 (07:20 -0700)
If the page has buffers, shrink_page_list will try to free the buffer
mappings associated with the page and try to free the page as well.  In
the rare race with speculative reference, the page will be freed shortly
by speculative reference.  But nr_reclaimed is not incremented correctly
when we come across the THP.  We need to account all the base pages in
this case.

Link: https://lkml.kernel.org/r/20220425111232.23182-5-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Huang, Ying <ying.huang@intel.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 68d4004e03973322b657f0d3d7ece143e0d8d998..61688f4a9d1e58524188e66c6ac5990d0570dac7 100644 (file)
@@ -1884,7 +1884,7 @@ retry:
                                         * increment nr_reclaimed here (and
                                         * leave it off the LRU).
                                         */
-                                       nr_reclaimed++;
+                                       nr_reclaimed += nr_pages;
                                        continue;
                                }
                        }