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 1BB4BC3ABC9 for ; Thu, 15 May 2025 12:45:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3EB366B0082; Thu, 15 May 2025 08:45:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 39A4E6B0083; Thu, 15 May 2025 08:45:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 239BE6B0088; Thu, 15 May 2025 08:45:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 04FF86B0082 for ; Thu, 15 May 2025 08:45:40 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 49A79E0A79 for ; Thu, 15 May 2025 12:45:42 +0000 (UTC) X-FDA: 83445113724.26.17C6F99 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by imf17.hostedemail.com (Postfix) with ESMTP id DCB4740014 for ; Thu, 15 May 2025 12:45:39 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=H8mMzx31; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf17.hostedemail.com: domain of petr.pavlu@suse.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=petr.pavlu@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747313140; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=d8ytmU0Ivj0kf+KiGaZmrUJ7Xo2jJQd+tfoIzhI9mb4=; b=bM/6cn53BxknGINlxX9B5BD70qIJE5+3jfd4oMoWj5V7nukelqRkQGdX6DkXKv9BfpCUR9 krGJzQDHOcgly5Vz3LAxuHXtp95FvCK4XcJe5W9qw0BwyCf4C4okFL3VVvMMSt3UjI+/GS lxTF8eC4O15VXGbzDznR9Topovg0H9Y= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747313140; a=rsa-sha256; cv=none; b=55PGJYwvRbxnzgsYd7wY0dqStIRuNl17AtiPvpUcRtw4RS8TsC7UywdeVJoYj84BddJNE9 VHZbpHvC320CJuriVgCulFW7n+2p+6Rz5YnrVGgVjlY5vqU2KHyUKgGzafR8LJGgwsUHW5 qQNpg1mr8pQZnLo9dF5aOtK9Fvv2xzY= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=H8mMzx31; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf17.hostedemail.com: domain of petr.pavlu@suse.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=petr.pavlu@suse.com Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3a206845eadso525192f8f.3 for ; Thu, 15 May 2025 05:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1747313138; x=1747917938; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=d8ytmU0Ivj0kf+KiGaZmrUJ7Xo2jJQd+tfoIzhI9mb4=; b=H8mMzx314P6XqhK9Zj0C2983a+0dllSFr1cEvVb++8c4PQ/VYJYCrubneXW3mzcRKV dYCBy+bnwpOR1gX0GvVP/FfwAiByuItD9eEfCXwNoNE1NRmHbryalaEahLhRk0nVmoIC oOXdo3EpO9yWcbdb5eOYucWGrg88VqWwIbeZA/oJNO68J2BPg2hm88xvpUb3ddWd9cJR 4FQAOp2egUr0PyMkoK1r8EVLe7X/goCGriQPje+TUyHbmmSS0kFBWbVaxl2MHIZbBM3Y G5ulSzyeBmyy1Pwm/Qh14EdqvlYD8d+sR+xLOP9f/yFt0Tk++9wFrakj7x6IJ+MdLVV0 ItFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747313138; x=1747917938; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=d8ytmU0Ivj0kf+KiGaZmrUJ7Xo2jJQd+tfoIzhI9mb4=; b=v6jJnOyVUpEHl+T3DGipVA4/NT6h/YdHJvmO6FYqgu2hS1bA4M7LD56xrBlAqNSApA 6YKpeKSi8KEIk9hxd0SywLYNkgiBV/keeCvSkmi3TFQIDkBnoyMVZFRalZJvqIwh19I2 uhdnCy6ZDvzaiGy/gxhgPXj6KNBBqohWKSPQPqjYmZmI/0XiDv71NyHl3sRQo9+Fbc4y ZHGJg0LzaukZPHs7bF5znYGX4H9/LFDbexn1nI+y0TmxFO6spLc65XBQoESrlnlugXOu jXh/3+ApJ8Lw3qtN2dNkG8CfuEHC/7cgoydil1Gn15/zuCE3JtLjBoxNgV+DdaG4uVJf tStQ== X-Forwarded-Encrypted: i=1; AJvYcCX+obbM4nReDJzQH+F57owHcKpA4y+AzjE6X7ZN2YvqXOW4In/mHkHBmebXtYmJmrdUm/aMtcHIbw==@kvack.org X-Gm-Message-State: AOJu0Ywbg7ytP9DXVECkxBmWmLgOSoeI/AjG6YhSNIEGqTWLn9muHyfA tULIhbL7fLvfbFj2qNY/ERpONDG5wUPHtNFk+5WYR3P3TppBblrdRa75wh+Yai0= X-Gm-Gg: ASbGnctVjWX8P/oIMoLklfdbbP/Z+OU8WBxgCBhjRGGeSGRYQgfKYenwyiSk7+K04KL /igd69IuQfMQJ5R6s74dOlkn9iszSG2+s/Lp0ies80/O4ajAv4/RRq+x4ApiXALaSixhXulJ3RH 5xp6UVyonfsEFsPzIiGVGQZPiSrBzX4u+P+ggO+MkLPhubcspQYI0MgtawaP86XOTcbwo9I31zu eAZ+abm+cTjn6BQfZUdhfsaVyORVTDhxTj5sNBabUqr1iCK9Ui6vpqxBHREtig4Ui/z2VT2EZje zDonhx1shi1o3uLZLzTZ2KrUY9bRGLtSAnzQixlelMzcAayQMT5nj2aU3Doy3g0S X-Google-Smtp-Source: AGHT+IF38PL0wzeSj4GvEAu3FCBjnQjz0SXPYCgpQOL/dMJEuls5eMJL3RAbOl92w8KLLIZbHWD67w== X-Received: by 2002:a5d:404e:0:b0:3a3:5833:c900 with SMTP id ffacd0b85a97d-3a35833cae7mr1136954f8f.8.1747313138119; Thu, 15 May 2025 05:45:38 -0700 (PDT) Received: from [10.100.51.48] ([193.86.92.181]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4df97d76cfcsm658516137.11.2025.05.15.05.45.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 15 May 2025 05:45:37 -0700 (PDT) Message-ID: Date: Thu, 15 May 2025 14:45:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 01/12] module: Move modprobe_path and modules_disabled ctl_tables into the module subsys To: Joel Granados 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 References: <20250509-jag-mv_ctltables_iter2-v1-0-d0ad83f5f4c3@kernel.org> <20250509-jag-mv_ctltables_iter2-v1-1-d0ad83f5f4c3@kernel.org> Content-Language: en-US From: Petr Pavlu In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: wxkf1g5fba3xmhxaykokuzmo53h4qg5i X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: DCB4740014 X-HE-Tag: 1747313139-525420 X-HE-Meta: U2FsdGVkX1/bilFTg4luzqW5aQSXgvvogzXFkpR79MgCa5xkHCmqDa98NTa8KsfAWQMv4vU7VfPnX0vuYd13h/JXJR7vv8lFvfNbOHaEqRyAxCD1xYR/CRUGN7P5TLFwPHhbdYJeZ777h+V8cfJb8QO2lHRJKIYlUuNn0p4Fn2SZqh0SGvTTJjhfW+UdbQ18cLNigVqD02QPK2/zLwrkmNh8hZKrc2pedgUvS9U/OtdbfTeyrm5umNoh55O9/MYlv2SvJbWeIwEaXvTxn3fF4166XG9MTM7UOKD2LbDjL8u9NKrbUHnxcgShzZ/E6RpC0I+LqptY7QaThSyYoeP4FJrdbPZP6WFQPynaj83PVfSIGAgTmOQRsWLtFRTXWsejJl9lu1U7sTud8sC+F/mgGvYs5wKQspAorp/ICnUYpdkelam1rod8/AKnGRJPc6EIQpn+uzhbEKGIO3e456o/T+CCTF5ioSSzndbXjgH2YsY3LxSBvhcXoeqWaX8FOeW6tjVqMRFyhPQUgbHtJy6/vg25ewked8UyY63aM3XQfqbF+hoIw5BPUlptHHx7p9rTodyvLxs74w+YVX8jjw2pI/rsRAs/1I3JQvyuXPg+ZJ7BjxTZ14WXm0YC6kRuBLCs7bTsBSQlQ3encee8fqKduvFB6O+FWW3VirrZXkIfAIi3NkJ98kO9V3MwPDVyi4QTYWownDzRb6rQYQMe+98fSCJnTZtURFqAEvIPF6atgpYJH6Zi9+iSX/QvX9S3clSCSpd/WxR9JAsCfkjgtWm45UdCul1OBvGiNOwV0AKzooJQLz6F/ZbECZLiwZF4xCe/B9ZHAN66aiddhudaMODJvjshvjKQSyU5KLy9qkhhJ/x3ypyCSWAAc0VFd6HlqgETBOBZCPjAUSAYOd0dym5vUBFFmCPdOtrWNhRrmgl7G34bFZQ92mNR1Rs0lh1GuaGjpfl38vlT/fITgM/tjZ9 +mtLHuoI jmyZCsHtxkQDmVgGkEVi+AMfUbUD0bGofj2Y9mK3XiQ7jwV/vEh2v1MZwFRHMzIDp0MAdmbNbiJWPaMVu8Vce6LVxJWAysPXLfZX7r5zgx95zLhdwP3hFgz3AeY9XUE6TJzpkoTltdalK3PYxS/PN8c5XLaYTzrd+PrU7s5vMFvLXA1GZzrCBkRQWqz34DqWjJQPEOhaAiNcRp1/smg1qSq7JuaSvN0SRbV//Q0DQiCuIy7bOBE4WjIXSyOnLEvzJXu2VDCZbVDfoD8Ocb68Ug+CXyxHL+1QChBRGR6xwjLWyFz/OYGTFl/XxfesF+kHwVpLSROXoj5WgNEZBzNWwxE2O5lFS3E9N43MfMNBHvBKLhLiKcKOlRt01RZBugZkfSN4IenbkpCGiTAg2qFDJqmxj8yvQkaOoYxgLlzXiEBP8Bn2zI5UT46+LN2D5f2k3UYJWwzUSUwQnai0MH3Cb6HNf4XzYYURAO2TQZ8lz6NFGRMKz8FPamwQT1MXFc/5xzjBLCQlJNwCfJ6A= 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: On 5/15/25 12:04, Joel Granados wrote: > 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. >>> >>> 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. >>> >>> 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] = CONFIG_MODPROBE_PATH; >>> +static char modprobe_path[KMOD_PATH_LEN] = CONFIG_MODPROBE_PATH; >>> >>> static void free_modprobe_argv(struct subprocess_info *info) >>> { >>> @@ -177,3 +177,33 @@ int __request_module(bool wait, const char *fmt, ...) >>> return ret; >>> } >>> EXPORT_SYMBOL(__request_module); >>> + >>> +#ifdef CONFIG_MODULES >>> +static const struct ctl_table kmod_sysctl_table[] = { >>> + { >>> + .procname = "modprobe", >>> + .data = &modprobe_path, >>> + .maxlen = KMOD_PATH_LEN, >>> + .mode = 0644, >>> + .proc_handler = proc_dostring, >>> + }, >>> + { >>> + .procname = "modules_disabled", >>> + .data = &modules_disabled, >>> + .maxlen = sizeof(int), >>> + .mode = 0644, >>> + /* only handle a transition from default "0" to "1" */ >>> + .proc_handler = proc_dointvec_minmax, >>> + .extra1 = SYSCTL_ONE, >>> + .extra2 = SYSCTL_ONE, >>> + }, >> >> 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. >> >> 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?: > [...] Let's also move the KMOD_PATH_LEN definition and the modprobe_path declaration from include/linux/kmod.h to kernel/module/internal.h, as they are now fully internal to the module loader, and use "module" instead of "kmod" in the sysctl registration to avoid confusion with the modprobe logic. The adjusted patch is below. Reviewed-by: Petr Pavlu -- Thanks, Petr diff --git a/include/linux/kmod.h b/include/linux/kmod.h index 68f69362d427..9a07c3215389 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h @@ -14,10 +14,7 @@ #include #include -#define KMOD_PATH_LEN 256 - #ifdef CONFIG_MODULES -extern char modprobe_path[]; /* for sysctl */ /* modprobe exit status on success, -ve on error. Return value * usually useless though. */ extern __printf(2, 3) diff --git a/include/linux/module.h b/include/linux/module.h index 8050f77c3b64..f4ab8d90c475 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -304,7 +304,6 @@ struct notifier_block; #ifdef CONFIG_MODULES -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/internal.h b/kernel/module/internal.h index 626cf8668a7e..0954c8de00c2 100644 --- a/kernel/module/internal.h +++ b/kernel/module/internal.h @@ -58,6 +58,9 @@ extern const struct kernel_symbol __stop___ksymtab_gpl[]; extern const u32 __start___kcrctab[]; extern const u32 __start___kcrctab_gpl[]; +#define KMOD_PATH_LEN 256 +extern char modprobe_path[]; + struct load_info { const char *name; /* pointer to module in temporary copy, freed at end of load_module() */ diff --git a/kernel/module/main.c b/kernel/module/main.c index a2859dc3eea6..a336b7b3fb23 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -126,9 +126,37 @@ static void mod_update_bounds(struct module *mod) } /* Block module loading/unloading? */ -int modules_disabled; +static int modules_disabled; core_param(nomodule, modules_disabled, bint, 0); +static const struct ctl_table module_sysctl_table[] = { + { + .procname = "modprobe", + .data = &modprobe_path, + .maxlen = KMOD_PATH_LEN, + .mode = 0644, + .proc_handler = proc_dostring, + }, + { + .procname = "modules_disabled", + .data = &modules_disabled, + .maxlen = sizeof(int), + .mode = 0644, + /* only handle a transition from default "0" to "1" */ + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ONE, + .extra2 = SYSCTL_ONE, + }, +}; + +static int __init init_module_sysctl(void) +{ + register_sysctl_init("kernel", module_sysctl_table); + return 0; +} + +subsys_initcall(init_module_sysctl); + /* Waiting for a module to finish initializing? */ static DECLARE_WAIT_QUEUE_HEAD(module_wq); 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 */ -#include #include #include #include @@ -1616,25 +1615,6 @@ static const struct ctl_table kern_table[] = { .proc_handler = proc_dointvec, }, #endif -#ifdef CONFIG_MODULES - { - .procname = "modprobe", - .data = &modprobe_path, - .maxlen = KMOD_PATH_LEN, - .mode = 0644, - .proc_handler = proc_dostring, - }, - { - .procname = "modules_disabled", - .data = &modules_disabled, - .maxlen = sizeof(int), - .mode = 0644, - /* only handle a transition from default "0" to "1" */ - .proc_handler = proc_dointvec_minmax, - .extra1 = SYSCTL_ONE, - .extra2 = SYSCTL_ONE, - }, -#endif #ifdef CONFIG_UEVENT_HELPER { .procname = "hotplug",