Skip to content

Commit 8e7b52b

Browse files
Muchun Songjfvogel
authored andcommitted
mm: lru: add VM_WARN_ON_ONCE_FOLIO to lru maintenance function
We need to make sure that the page is deleted from or added to the correct lruvec list. So add a VM_WARN_ON_ONCE_FOLIO() to catch invalid users. Then the VM_BUG_ON_PAGE() in move_pages_to_lru() could be removed since add_page_to_lru_list() will check that. Signed-off-by: Muchun Song <[email protected]> Acked-by: Roman Gushchin <[email protected]> Link: https://lore.kernel.org/all/[email protected]/ Orabug: 37405594 Conflicts: include/linux/mm_inline.h (Due to presence of 'commit ec1c86b mm: multi-gen LRU: groundwork') Signed-off-by: Imran Khan <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]>
1 parent cc65a5d commit 8e7b52b

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

include/linux/mm_inline.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ void lruvec_add_folio(struct lruvec *lruvec, struct folio *folio)
323323
if (lru_gen_add_folio(lruvec, folio, false))
324324
return;
325325

326+
VM_WARN_ON_ONCE_FOLIO(!folio_matches_lruvec(folio, lruvec), folio);
327+
326328
update_lru_size(lruvec, lru, folio_zonenum(folio),
327329
folio_nr_pages(folio));
328330
if (lru != LRU_UNEVICTABLE)
@@ -337,6 +339,8 @@ void lruvec_add_folio_tail(struct lruvec *lruvec, struct folio *folio)
337339
if (lru_gen_add_folio(lruvec, folio, true))
338340
return;
339341

342+
VM_WARN_ON_ONCE_FOLIO(!folio_matches_lruvec(folio, lruvec), folio);
343+
340344
update_lru_size(lruvec, lru, folio_zonenum(folio),
341345
folio_nr_pages(folio));
342346
/* This is not expected to be used on LRU_UNEVICTABLE */
@@ -351,6 +355,8 @@ void lruvec_del_folio(struct lruvec *lruvec, struct folio *folio)
351355
if (lru_gen_del_folio(lruvec, folio, false))
352356
return;
353357

358+
VM_WARN_ON_ONCE_FOLIO(!folio_matches_lruvec(folio, lruvec), folio);
359+
354360
if (lru != LRU_UNEVICTABLE)
355361
list_del(&folio->lru);
356362
update_lru_size(lruvec, lru, folio_zonenum(folio),

mm/vmscan.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1886,7 +1886,6 @@ static unsigned int move_folios_to_lru(struct list_head *list)
18861886
continue;
18871887
}
18881888

1889-
VM_BUG_ON_FOLIO(!folio_matches_lruvec(folio, lruvec), folio);
18901889
lruvec_add_folio(lruvec, folio);
18911890
nr_pages = folio_nr_pages(folio);
18921891
nr_moved += nr_pages;

0 commit comments

Comments
 (0)