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-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 26 Jan 2022 14:48:17 -0800
From:   Joe Damato <jdamato@...tly.com>
To:     netdev@...r.kernel.org
Cc:     kuba@...nel.org, davem@...emloft.net, ilias.apalodimas@...aro.org,
        hawk@...nel.org, Joe Damato <jdamato@...tly.com>
Subject: [PATCH net-next 3/6] net: page_pool: Add a high order alloc stat

Add a stat to track high order allocations in the slow path. A static
inline function is exposed for accessing this stat.

Signed-off-by: Joe Damato <jdamato@...tly.com>
---
 include/net/page_pool.h | 11 +++++++++++
 net/core/page_pool.c    |  1 +
 2 files changed, 12 insertions(+)

diff --git a/include/net/page_pool.h b/include/net/page_pool.h
index b5691ee..b024197 100644
--- a/include/net/page_pool.h
+++ b/include/net/page_pool.h
@@ -83,6 +83,7 @@ struct page_pool_stats {
 	struct {
 		u64 fast; /* fast path allocations */
 		u64 slow; /* slow-path order-0 allocations */
+		u64 slow_high_order; /* slow-path high order allocations */
 	} alloc;
 };
 
@@ -206,6 +207,11 @@ static inline u64 page_pool_stats_get_slow(struct page_pool *pool)
 {
 	return pool->ps.alloc.slow;
 }
+
+static inline u64 page_pool_stats_get_slow_high_order(struct page_pool *pool)
+{
+	return pool->ps.alloc.slow_high_order;
+}
 #else
 static inline void page_pool_destroy(struct page_pool *pool)
 {
@@ -235,6 +241,11 @@ static inline u64 page_pool_stats_get_slow(struct page_pool *pool)
 {
 	return 0;
 }
+
+static inline u64 page_pool_stats_get_slow_high_order(struct page_pool *pool)
+{
+	return 0;
+}
 #endif
 
 void page_pool_put_page(struct page_pool *pool, struct page *page,
diff --git a/net/core/page_pool.c b/net/core/page_pool.c
index 9dbe721..3a4b912 100644
--- a/net/core/page_pool.c
+++ b/net/core/page_pool.c
@@ -240,6 +240,7 @@ static struct page *__page_pool_alloc_page_order(struct page_pool *pool,
 		return NULL;
 	}
 
+	pool->ps.alloc.slow_high_order++;
 	page_pool_set_pp_info(pool, page);
 
 	/* Track how many pages are held 'in-flight' */
-- 
2.7.4

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ