[PATCH v1] mm/huge_memory.c: warn with pr_warn_ratelimited instead of VM_WARN_ON_ONCE_FOLIO

From: Naoya Horiguchi
Date: Thu Apr 06 2023 - 04:29:24 EST


From: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>

split_huge_page_to_list() WARNs when called for huge zero pages, which
sounds to me too harsh because it does not imply a kernel bug, but just
notifies the event to admins. On the other hand, this is considered
as critical by syzkaller and makes its testing less efficient, which
seems to me harmful.

So replace the VM_WARN_ON_ONCE_FOLIO with pr_warn_ratelimited.

Fixes: 478d134e9506 ("mm/huge_memory: do not overkill when splitting huge_zero_page")
Reported-by: syzbot+07a218429c8d19b1fb25@xxxxxxxxxxxxxxxxxxxxxxxxx
Link: https://lore.kernel.org/lkml/000000000000a6f34a05e6efcd01@xxxxxxxxxx/
Signed-off-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
---
mm/huge_memory.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 81a5689806af..06bcdd6f5060 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -2649,9 +2649,10 @@ int split_huge_page_to_list(struct page *page, struct list_head *list)
VM_BUG_ON_FOLIO(!folio_test_large(folio), folio);

is_hzp = is_huge_zero_page(&folio->page);
- VM_WARN_ON_ONCE_FOLIO(is_hzp, folio);
- if (is_hzp)
+ if (is_hzp) {
+ pr_warn_ratelimited("Called split_huge_page for huge zero page\n");
return -EBUSY;
+ }

if (folio_test_writeback(folio))
return -EBUSY;
--
2.25.1