Re: [PATCH v2 1/3] mm, swap: ratelimit bad swap entry reports

Kairui Song <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.kernel.mm
Message-ID <aoP-r2C9g9SwHtqK@KASONG-MC4>
On Thu, Aug 13, 2026 at 03:02:20AM +0800, Breno Leitao wrote:
> A corrupt page table hands the same bogus entry to get_swap_device() on
> every access to the mapping, and every rejection is logged. One machine
> logged 6185620 copies of the same line in a few hours.
> 
> swap_dup_entry_direct() prints the same message from the fork path, once
> per call: the WARN_ON_ONCE() guarding it warns once, the pr_err() inside
> does not.
> 
> Rate limit all three prints.
> 
> Signed-off-by: Breno Leitao <[email protected]>
> ---
>  mm/swapfile.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index 4d4e3e3059f6b..31c8a340606bb 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -1899,11 +1899,11 @@ struct swap_info_struct *get_swap_device(swp_entry_t entry)
>  
>  	return si;
>  bad_nofile:
> -	pr_err("%s: %s%08lx\n", __func__, Bad_file, entry.val);
> +	pr_err_ratelimited("%s: %s%08lx\n", __func__, Bad_file, entry.val);
>  out:
>  	return NULL;
>  put_out:
> -	pr_err("%s: %s%08lx\n", __func__, Bad_offset, entry.val);
> +	pr_err_ratelimited("%s: %s%08lx\n", __func__, Bad_offset, entry.val);
>  	percpu_ref_put(&si->users);
>  	return NULL;
>  }
> @@ -3876,7 +3876,7 @@ int swap_dup_entry_direct(swp_entry_t entry)
>  
>  	si = swap_entry_to_info(entry);
>  	if (WARN_ON_ONCE(!si)) {
> -		pr_err("%s%08lx\n", Bad_file, entry.val);
> +		pr_err_ratelimited("%s%08lx\n", Bad_file, entry.val);
>  		return -EINVAL;
>  	}
>  

Looks good to me, thanks!

Acked-by: Kairui Song <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.