2023-04-06 08:34:48

by Naoya Horiguchi

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

From: Naoya Horiguchi <[email protected]>

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: [email protected]
Link: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by: Naoya Horiguchi <[email protected]>
Cc: [email protected]
---
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


2023-04-06 23:23:53

by Yang Shi

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

On Thu, Apr 6, 2023 at 1:20 AM Naoya Horiguchi
<[email protected]> wrote:
>
> From: Naoya Horiguchi <[email protected]>
>
> 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 <[email protected]>

>
> Fixes: 478d134e9506 ("mm/huge_memory: do not overkill when splitting huge_zero_page")
> Reported-by: [email protected]
> Link: https://lore.kernel.org/lkml/[email protected]/
> Signed-off-by: Naoya Horiguchi <[email protected]>
> Cc: [email protected]
> ---
> 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
>