From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34BC2C2D0CD for ; Thu, 15 May 2025 10:04:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 827196B009B; Thu, 15 May 2025 06:04:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7D7576B009F; Thu, 15 May 2025 06:04:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 675BC6B00BA; Thu, 15 May 2025 06:04:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 46BD86B009B for ; Thu, 15 May 2025 06:04:11 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id EACA9C1632 for ; Thu, 15 May 2025 10:04:12 +0000 (UTC) X-FDA: 83444706744.10.DED015D Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf17.hostedemail.com (Postfix) with ESMTP id 0CA6140003 for ; Thu, 15 May 2025 10:04:10 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=SdlfQCTm; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf17.hostedemail.com: domain of joel.granados@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=joel.granados@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747303451; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FaseWI0C3OWtHv08mvEOm++9/f7pgmFWvAMdLoT5qoo=; b=2f0/XQP8GS0bzV61V8R9HHu2/gI8IinWkFj4AqrJxg3vjlhR8vwQWmQfm+L59eJVFgifxl k1LnSLqtmxxUw0u5bUAVPZZvd6EQbp2EgBqpIlq0ya7jKUT7liAlpq2hWUHt4E8uwT4BcA z6nAl3AHPi4kev07kwFmFDaHQOY/9pw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747303451; a=rsa-sha256; cv=none; b=Ph+aL5JDK9QQLtAuPx2TKGCSI6HG0+iubKayAk3rm1srelj3Okgp6miatbmcMP6+JBGJK/ bteVA01bzY6PTWVwpImrpJesJdqDq0r312BaewjXfpJofLVthRgcqoSCMX+iFJPKP652eA s6w7N42AHjq6qDEbAZWC2CAOc5XC6Ec= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=SdlfQCTm; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf17.hostedemail.com: domain of joel.granados@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=joel.granados@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id C0E194A518; Thu, 15 May 2025 10:04:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1AB21C4CEE7; Thu, 15 May 2025 10:04:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747303449; bh=sD1eHD0aNCDTJQ1r/x2BlkpBGb6+H+dwk6qBtn6A6eo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=SdlfQCTmqiyc9cLRn+bVZ+J/xKgEspqF0Xu5p+/MWV6lwgvd5Lj8GKu0SHK6ExgDM wdl5smrvYBEAv233vaVzX+xdxBbq8VNg+eXXl1G5vFNI2TVEsSNxMyt1dLNB7OtHmE i09U3/VA+pM89W75yUOWmZ3HBaqvB2rIFp8kxGmrc0hxCOLryKo/Zn0O/zVzpixJtW roRpUVx+OI1n7fhD3n1pZbEFimyLqzII6s/qKrupFLv+4KDguIzE0hAHVJiLpuIpTG wzsrcEMv6piv+Yv2BAzI19UUcFgwLeSGYEj4HyES8HYjMYE17NVnQ6nYEfIv5hGuCb bUqghGUUvFwbQ== Date: Thu, 15 May 2025 12:04:04 +0200 From: Joel Granados To: Petr Pavlu Cc: Luis Chamberlain , Sami Tolvanen , Daniel Gomez , Kees Cook , Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Andrew Morton , "James E.J. Bottomley" , Helge Deller , Greg Kroah-Hartman , Jiri Slaby , linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, rcu@vger.kernel.org, linux-mm@kvack.org, linux-parisc@vger.kernel.org, linux-serial@vger.kernel.org Subject: Re: [PATCH 01/12] module: Move modprobe_path and modules_disabled ctl_tables into the module subsys Message-ID: References: <20250509-jag-mv_ctltables_iter2-v1-0-d0ad83f5f4c3@kernel.org> <20250509-jag-mv_ctltables_iter2-v1-1-d0ad83f5f4c3@kernel.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="ru77vocekp26ujzg" Content-Disposition: inline In-Reply-To: X-Stat-Signature: 3we3ik3h5481ta5no6674arq974ko9fy X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 0CA6140003 X-HE-Tag: 1747303450-363923 X-HE-Meta: U2FsdGVkX18Q9+yvVrlHwe4AJmjV9QHzhyemVINodcoKnenCSyCnEtut0MPblEuxQw48LFCa6iJquF007K7TOBXGDuYd4l4UMYic9s5koE90zx5SsF1oocuJLXp3ekwv9N4pcutMMQoJoyJmjc/iMdE+fBeQb57ac7GNxU9Gv2J3fFpS1TMBxyGog+L1MwtEnilgxegeQiCpbprCBh7TGDUW2Aw5o4lvP5TfQIVzs0lCL/+2sr96ayeSoNCQ4q1iu4pZWaww3bEAU3jPtEFncJZAlY80ID1WXMoBiVwHYX9G5CY4r8FwDWKrd1/ZOjbzENQgmcZf9P7cRyGcIghXULf6bY2xxXBmOxRHOnKqmKlyvm2UgDSc3oEeNnk8T1a8bbeSHz2r0jaUuMa7xQzPH0l0hgxX89utGVv3g0de+6iCo19uOVwzpINK+iNLrwwSn6V9LLW1VSqkEb7f0nUt+xhuVtexm27a+uwg3CUg86cbkGsHlxUlNTA4KSio7nlDu7SU/FyG8pt81fpdf4/r2r2saMjw9XivDFJ8yWA7AMZhDa9eoixMKtbVsEizzSwT7ENDs5GOHpY0TRIHKiRkboF6RIRmRFwNrugVE+RuR+piu3kMvYLlZHR3vOnjWzb+cr54J+3ajmF6ZM13QHrJ/DRWw/G7i+17iR0VxFmrU0QgSS23/xsH1ct5rxGG2j5eXme+FMu+6a82xtaqyA7FkLRAQkASjKPbuC3fqTKcKPIAa+bN/iKbRVYokI/Bcn3JctrIMLADXEAGL7G8SHoF/UYhotbYS684Cez5SsWIkomP2ETnKmcqqQtoh4ZkpDUBAmvc2DgXaB2uVIXIa/JPsri4q1AQYXmrzYRkUu/WUVRUHzYj9Rh/ELz0mX/8MnTJUQiOme6V9Wm5NpHM/fN4SLu4EahHaHwnDYsQaLeYAEXBYUzxEQqrdDLObpt1EA5yauL2rNNWWaduHNVlQis v1zguly7 jmnSeE78bfrrCiZaLrOZvPHzdIQL+R7DaIOwU23/83poGLZxtk77RINMPuybYqzl3RNTblfusBBDg8xsaQD6B1EAp6IGaAjk8D26xjJHfV0RjTvuKz1F8sOtELPx7JmFXG3xn/b21MUsfIJ0hrUP8d5qRGx7Zn5MObC8pKrKidXaqfpDkbbo/+VvufTJRWIIVaXksmSFDxl1HOLLWfe9an0vvVYjBcs8KdMef8xQAmLgvHn8gUaI1JGP/JPmsTxd4CXr5He1QgDPgDbIusFC8YlzUEda0l3gp3NecCU2IV/d2vKGOgO8B+/c+gu5PIZ9l+y3P4S6WEmpZLpnLvZRRuSFF9X75BxweHoP+TA6ptALVliOPamRh/I6NA1a2+XPS3s6IbntCfdL5+apa7Q3YrIcxt35TomCS1khwQdQ6/VMQjsriEFZKG5SPp7gMmzxIWIAjY0kAoVKGmhJH7V/c76mVj//CfPFs7ZtvfTahfiiaZFjm3/KXAjyU7A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --ru77vocekp26ujzg Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, May 15, 2025 at 10:04:53AM +0200, Petr Pavlu wrote: > On 5/9/25 14:54, Joel Granados wrote: > > Move module sysctl (modprobe_path and modules_disabled) out of sysctl.c > > and into the modules subsystem. Make the modprobe_path variable static > > as it no longer needs to be exported. Remove module.h from the includes > > in sysctl as it no longer uses any module exported variables. > >=20 > > This is part of a greater effort to move ctl tables into their > > respective subsystems which will reduce the merge conflicts in > > kernel/sysctl.c. > >=20 > > Signed-off-by: Joel Granados > > [...] > > --- a/kernel/module/kmod.c > > +++ b/kernel/module/kmod.c > > @@ -60,7 +60,7 @@ static DEFINE_SEMAPHORE(kmod_concurrent_max, MAX_KMOD= _CONCURRENT); > > /* > > modprobe_path is set via /proc/sys. > > */ > > -char modprobe_path[KMOD_PATH_LEN] =3D CONFIG_MODPROBE_PATH; > > +static char modprobe_path[KMOD_PATH_LEN] =3D CONFIG_MODPROBE_PATH; > > =20 > > static void free_modprobe_argv(struct subprocess_info *info) > > { > > @@ -177,3 +177,33 @@ int __request_module(bool wait, const char *fmt, .= =2E.) > > return ret; > > } > > EXPORT_SYMBOL(__request_module); > > + > > +#ifdef CONFIG_MODULES > > +static const struct ctl_table kmod_sysctl_table[] =3D { > > + { > > + .procname =3D "modprobe", > > + .data =3D &modprobe_path, > > + .maxlen =3D KMOD_PATH_LEN, > > + .mode =3D 0644, > > + .proc_handler =3D proc_dostring, > > + }, > > + { > > + .procname =3D "modules_disabled", > > + .data =3D &modules_disabled, > > + .maxlen =3D sizeof(int), > > + .mode =3D 0644, > > + /* only handle a transition from default "0" to "1" */ > > + .proc_handler =3D proc_dointvec_minmax, > > + .extra1 =3D SYSCTL_ONE, > > + .extra2 =3D SYSCTL_ONE, > > + }, >=20 > This is minor.. but the file kernel/module/kmod.c contains the logic to > request direct modprobe invocation by the kernel. Registering the > modprobe_path sysctl here is appropriate. However, the modules_disabled > setting affects the entire module loader so I don't think it's best to > register it here. >=20 > I suggest keeping a single table for the module sysctl values but moving > it to kernel/module/main.c. This means the variable modprobe_path must > retain external linkage, on the other hand, modules_disabled can be made > static. Like this?: --- include/linux/module.h | 1 - kernel/module/main.c | 30 +++++++++++++++++++++++++++++- kernel/sysctl.c | 20 -------------------- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/include/linux/module.h b/include/linux/module.h index d94b196d5a34..25476168e012 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -302,7 +302,6 @@ struct notifier_block; =20 #ifdef CONFIG_MODULES =20 -extern int modules_disabled; /* for sysctl */ /* Get/put a kernel symbol (calls must be symmetric) */ void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); diff --git a/kernel/module/main.c b/kernel/module/main.c index a2859dc3eea6..13055ef65f15 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -126,9 +126,37 @@ static void mod_update_bounds(struct module *mod) } =20 /* Block module loading/unloading? */ -int modules_disabled; +static int modules_disabled; core_param(nomodule, modules_disabled, bint, 0); =20 +static const struct ctl_table kmod_sysctl_table[] =3D { + { + .procname =3D "modprobe", + .data =3D &modprobe_path, + .maxlen =3D KMOD_PATH_LEN, + .mode =3D 0644, + .proc_handler =3D proc_dostring, + }, + { + .procname =3D "modules_disabled", + .data =3D &modules_disabled, + .maxlen =3D sizeof(int), + .mode =3D 0644, + /* only handle a transition from default "0" to "1" */ + .proc_handler =3D proc_dointvec_minmax, + .extra1 =3D SYSCTL_ONE, + .extra2 =3D SYSCTL_ONE, + }, +}; + +static int __init init_kmod_sysctl(void) +{ + register_sysctl_init("kernel", kmod_sysctl_table); + return 0; +} + +subsys_initcall(init_kmod_sysctl); + /* Waiting for a module to finish initializing? */ static DECLARE_WAIT_QUEUE_HEAD(module_wq); =20 diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 9b4f0cff76ea..473133d9651e 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -19,7 +19,6 @@ * Removed it and replaced it with older style, 03/23/00, Bill Wendling */ =20 -#include #include #include #include @@ -1616,25 +1615,6 @@ static const struct ctl_table kern_table[] =3D { .proc_handler =3D proc_dointvec, }, #endif -#ifdef CONFIG_MODULES - { - .procname =3D "modprobe", - .data =3D &modprobe_path, - .maxlen =3D KMOD_PATH_LEN, - .mode =3D 0644, - .proc_handler =3D proc_dostring, - }, - { - .procname =3D "modules_disabled", - .data =3D &modules_disabled, - .maxlen =3D sizeof(int), - .mode =3D 0644, - /* only handle a transition from default "0" to "1" */ - .proc_handler =3D proc_dointvec_minmax, - .extra1 =3D SYSCTL_ONE, - .extra2 =3D SYSCTL_ONE, - }, -#endif #ifdef CONFIG_UEVENT_HELPER { .procname =3D "hotplug", --=20 2.47.2 --=20 Joel Granados --ru77vocekp26ujzg Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEErkcJVyXmMSXOyyeQupfNUreWQU8FAmglvAoACgkQupfNUreW QU8L/Av/YmkHrysPaGwJRKxmis9nMWc0PYzFjViNFVlZuFXAXKu5kWSHvaxsq8fl +yJvXtS9QV8pXzyKlEgEdknV+d8qh95hPO7WArzybZ3bivL7LsjCnBU6mflIQnOb xfvTTJncJ5PUk15VXsPA9mNiYy+xA2y7HCsxD7N3Vz2uDzl2HnJucfga9SRuua52 lTItMHiKvN0oxOwsVH5jQtPijcknG9sV7Cz84O31WuvY7DPhNFUBhhb6UGB5RA25 pM4Zb7bWDBv+xnWKGBjHFdhCqCDFr/Honyjvl4xiSbGd0kzucDlJiSkHiJfE/zFl 2Fvm/edUeW7PUI7pqyYunJeEeTDiNU1/aalCIErLT8idbEf5EwbqPVjMCU9ktVXS 73LiItIXrewicguZtSGB+nJMz4ETZKzBxFQo2ZTEsZ9saxr0SebmpSg1jar5rkXy S+3KjAQKE7JsI7s765cc1m/SCPceaN02cw9zMELFXt/0tQU5xIH2rWTLinYpFVyt HrP1upxU =vQLm -----END PGP SIGNATURE----- --ru77vocekp26ujzg--