Re: [PATCH 1/3] mm, swap: ratelimit bad swap entry reports in get_swap_device()
"David Hildenbrand (Arm)" <[email protected]>
| Newsgroups | org.kvack.linux-mm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 8/11/26 18:48, Pedro Falcato wrote: > On Tue, Aug 11, 2026 at 05:33:54PM +0200, David Hildenbrand (Arm) wrote: >> On 8/10/26 18:26, 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. >>> >>> Rate limit both prints. >>> >>> Signed-off-by: Breno Leitao <[email protected]> >>> --- >>> mm/swapfile.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/mm/swapfile.c b/mm/swapfile.c >>> index 4d4e3e3059f6b..9ab11dc24e4f1 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; >>> } >>> >> >> In print_bad_page_map() we use something more advanced >> (is_bad_page_map_ratelimited): essentially a burst of 60 followed by 1minute of >> silence. > > Is it more advanced? It just looks like a handcoded version of __ratelimit. > > ... I hate it now. I'll send a patch I guess. Thanks for cleaning that up! -- Cheers, David