lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240618213421.282381-1-shakeel.butt@linux.dev>
Date: Tue, 18 Jun 2024 14:34:21 -0700
From: Shakeel Butt <shakeel.butt@...ux.dev>
To: Andrew Morton <akpm@...ux-foundation.org>,
	Michal Hocko <mhocko@...nel.org>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
	kernel-team@...a.com,
	linux-mm@...ck.org,
	linux-kernel@...r.kernel.org,
	Kyle McMartin <kyle@...radead.org>
Subject: [PATCH] mm: ratelimit oversized kvmalloc warnings instead of once

At the moment oversize kvmalloc warnings are triggered once using
WARN_ON_ONCE() macro. One issue with this approach is that it only
detects the first abuser and then ignores the remaining abusers which
complicates detecting all such abusers in a timely manner. The situation
becomes worse when the repro has low probability and requires production
traffic and thus require large set of machines to find such abusers. In
Mera production, this warn once is slowing down the detection of these
abusers. Simply replace WARN_ON_ONCE with WARN_RATELIMIT.

Reported-by: Kyle McMartin <kyle@...radead.org>
Signed-off-by: Shakeel Butt <shakeel.butt@...ux.dev>
---
 mm/util.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/util.c b/mm/util.c
index 10f215985fe5..de36344e8d53 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -649,7 +649,8 @@ void *kvmalloc_node_noprof(size_t size, gfp_t flags, int node)
 
 	/* Don't even allow crazy sizes */
 	if (unlikely(size > INT_MAX)) {
-		WARN_ON_ONCE(!(flags & __GFP_NOWARN));
+		WARN_RATELIMIT(!(flags & __GFP_NOWARN), "size = %zu > INT_MAX",
+			       size);
 		return NULL;
 	}
 
-- 
2.43.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ