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

Message ID 20230406082004.2185420-1-naoya.horiguchi@linux.dev
State New
Headers
Series [v1] mm/huge_memory.c: warn with pr_warn_ratelimited instead of VM_WARN_ON_ONCE_FOLIO |

Commit Message

Naoya Horiguchi April 6, 2023, 8:20 a.m. UTC
  From: Naoya Horiguchi <naoya.horiguchi@nec.com>

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@syzkaller.appspotmail.com
Link: https://lore.kernel.org/lkml/000000000000a6f34a05e6efcd01@google.com/
Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Cc: stable@vger.kernel.org
---
 mm/huge_memory.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Yang Shi April 6, 2023, 10:57 p.m. UTC | #1
On Thu, Apr 6, 2023 at 1:20 AM Naoya Horiguchi
<naoya.horiguchi@linux.dev> wrote:
>
> From: Naoya Horiguchi <naoya.horiguchi@nec.com>
>
> 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.

Makes sense to me. Reviewed-by: Yang Shi <shy828301@gmail.com>

>
> Fixes: 478d134e9506 ("mm/huge_memory: do not overkill when splitting huge_zero_page")
> Reported-by: syzbot+07a218429c8d19b1fb25@syzkaller.appspotmail.com
> Link: https://lore.kernel.org/lkml/000000000000a6f34a05e6efcd01@google.com/
> Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
> Cc: stable@vger.kernel.org
> ---
>  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
>
  

Patch

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;