diff options
author | Miaohe Lin <linmiaohe@huawei.com> | 2021-11-05 13:42:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2021-11-06 13:30:40 -0700 |
commit | a500cb342c84a4c4696850304124bc801331c4a8 (patch) | |
tree | 580639fc2f89bc2b44d9ec84d785013876788b05 /mm/vmstat.c | |
parent | e1d8c966dbf11afcac1d115f3fca5a29060bba18 (diff) | |
download | linux-stable-a500cb342c84a4c4696850304124bc801331c4a8.tar.gz linux-stable-a500cb342c84a4c4696850304124bc801331c4a8.tar.bz2 linux-stable-a500cb342c84a4c4696850304124bc801331c4a8.zip |
mm/page_isolation: guard against possible putback unisolated page
Isolating a free page in an isolated pageblock is expected to always
work as watermarks don't apply here.
But if __isolate_free_page() failed, due to condition changes, the page
will be left on the free list. And the page will be put back to free
list again via __putback_isolated_page(). This may trigger
VM_BUG_ON_PAGE() on page->flags checking in __free_one_page() if
PageReported is set. Or we will corrupt the free list because
list_add() will be called for pages already on another list.
Add a VM_WARN_ON() to complain about this change.
Link: https://lkml.kernel.org/r/20210914114508.23725-1-linmiaohe@huawei.com
Fixes: 3c605096d315 ("mm/page_alloc: restrict max order of merging on isolated pageblock")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/vmstat.c')
0 files changed, 0 insertions, 0 deletions