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]
Message-Id: <20230809105006.1198165-15-j.granados@samsung.com>
Date: Wed,  9 Aug 2023 12:50:06 +0200
From: Joel Granados <joel.granados@...il.com>
To: mcgrof@...nel.org
Cc: rds-devel@....oracle.com,
	"David S. Miller" <davem@...emloft.net>,
	Florian Westphal <fw@...len.de>,
	willy@...radead.org,
	Jan Karcher <jaka@...ux.ibm.com>,
	Wen Gu <guwen@...ux.alibaba.com>,
	Simon Horman <horms@...ge.net.au>,
	Tony Lu <tonylu@...ux.alibaba.com>,
	linux-wpan@...r.kernel.org,
	Matthieu Baerts <matthieu.baerts@...sares.net>,
	Christian Borntraeger <borntraeger@...ux.ibm.com>,
	mptcp@...ts.linux.dev,
	Heiko Carstens <hca@...ux.ibm.com>,
	Stefan Schmidt <stefan@...enfreihafen.org>,
	Will Deacon <will@...nel.org>,
	Julian Anastasov <ja@....bg>,
	netfilter-devel@...r.kernel.org,
	Joerg Reuter <jreuter@...na.de>,
	linux-kernel@...r.kernel.org,
	Alexander Gordeev <agordeev@...ux.ibm.com>,
	linux-sctp@...r.kernel.org,
	Xin Long <lucien.xin@...il.com>,
	Herbert Xu <herbert@...dor.apana.org.au>,
	linux-hams@...r.kernel.org,
	Vasily Gorbik <gor@...ux.ibm.com>,
	coreteam@...filter.org,
	Ralf Baechle <ralf@...ux-mips.org>,
	Steffen Klassert <steffen.klassert@...unet.com>,
	Pablo Neira Ayuso <pablo@...filter.org>,
	keescook@...omium.org,
	Roopa Prabhu <roopa@...dia.com>,
	David Ahern <dsahern@...nel.org>,
	linux-arm-kernel@...ts.infradead.org,
	Catalin Marinas <catalin.marinas@....com>,
	Jozsef Kadlecsik <kadlec@...filter.org>,
	Wenjia Zhang <wenjia@...ux.ibm.com>,
	josh@...htriplett.org,
	linux-fsdevel@...r.kernel.org,
	Alexander Aring <alex.aring@...il.com>,
	Nikolay Aleksandrov <razor@...ckwall.org>,
	netdev@...r.kernel.org,
	Santosh Shilimkar <santosh.shilimkar@...cle.com>,
	linux-s390@...r.kernel.org,
	Sven Schnelle <svens@...ux.ibm.com>,
	"D. Wythe" <alibuda@...ux.alibaba.com>,
	Eric Dumazet <edumazet@...gle.com>,
	lvs-devel@...r.kernel.org,
	linux-rdma@...r.kernel.org,
	Paolo Abeni <pabeni@...hat.com>,
	Iurii Zaikin <yzaikin@...gle.com>,
	Marcelo Ricardo Leitner <marcelo.leitner@...il.com>,
	bridge@...ts.linux-foundation.org,
	Karsten Graul <kgraul@...ux.ibm.com>,
	Mat Martineau <martineau@...nel.org>,
	Miquel Raynal <miquel.raynal@...tlin.com>,
	Jakub Kicinski <kuba@...nel.org>,
	Joel Granados <j.granados@...sung.com>,
	Jani Nikula <jani.nikula@...ux.intel.com>
Subject: [PATCH v3 14/14] sysctl: Use ctl_table_size as stopping criteria for list macro

This is a preparation commit to make it easy to remove the sentinel
elements (empty end markers) from the ctl_table arrays. It both allows
the systematic removal of the sentinels and adds the ctl_table_size
variable to the stopping criteria of the list_for_each_table_entry macro
that traverses all ctl_table arrays. Once all the sentinels are removed
by subsequent commits, ctl_table_size will become the only stopping
criteria in the macro. We don't actually remove any elements in this
commit, but it sets things up to for the removal process to take place.

By adding header->ctl_table_size as an additional stopping criteria for
the list_for_each_table_entry macro, it will execute until it finds an
"empty" ->procname or until the size runs out. Therefore if a ctl_table
array with a sentinel is passed its size will be too big (by one
element) but it will stop on the sentinel. On the other hand, if the
ctl_table array without a sentinel is passed its size will be just write
and there will be no need for a sentinel.

Signed-off-by: Joel Granados <j.granados@...sung.com>
Suggested-by: Jani Nikula <jani.nikula@...ux.intel.com>
---
 fs/proc/proc_sysctl.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index 817bc51c58d8..504e847c2a3a 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -19,8 +19,9 @@
 #include <linux/kmemleak.h>
 #include "internal.h"
 
-#define list_for_each_table_entry(entry, header) \
-	for ((entry) = (header->ctl_table); (entry)->procname; (entry)++)
+#define list_for_each_table_entry(entry, header)	\
+	entry = header->ctl_table;			\
+	for (size_t i = 0 ; i < header->ctl_table_size && entry->procname; ++i, entry++)
 
 static const struct dentry_operations proc_sys_dentry_operations;
 static const struct file_operations proc_sys_file_operations;
-- 
2.30.2


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ