The cls_,sch_,act_ modules may be loaded lazily during network
configuration but without user's awareness and control.
Switch the lazy loading from canonical module names to a module alias.
This allows finer control over lazy loading, the precedent from
commit 
7f78e0351394 ("fs: Limit sys_mount to only request filesystem
modules.") explains it already:
	Using aliases means user space can control the policy of which
	filesystem^W net/sched modules are auto-loaded by editing
	/etc/modprobe.d/*.conf with blacklist and alias directives.
	Allowing simple, safe, well understood work-arounds to known
	problematic software.
By default, nothing changes. However, if a specific module is
blacklisted (its canonical name), it won't be modprobe'd when requested
under its alias (i.e. kernel auto-loading). It would appear as if the
given module was unknown.
The module can still be loaded under its canonical name, which is an
explicit (privileged) user action.
Signed-off-by: Michal Koutný <mkoutny@suse.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20240201130943.19536-4-mkoutny@suse.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 
 
                if (rtnl_held)
                        rtnl_unlock();
-               request_module("act_%s", act_name);
+               request_module(NET_ACT_ALIAS_PREFIX "%s", act_name);
                if (rtnl_held)
                        rtnl_lock();
 
 
 #ifdef CONFIG_MODULES
        if (rtnl_held)
                rtnl_unlock();
-       request_module("cls_%s", kind);
+       request_module(NET_CLS_ALIAS_PREFIX "%s", kind);
        if (rtnl_held)
                rtnl_lock();
        ops = __tcf_proto_lookup_ops(kind);
 
        if (!ops) {
                /* Not found, drop lock and try to load module */
                write_unlock(&qdisc_mod_lock);
-               request_module("sch_%s", name);
+               request_module(NET_SCH_ALIAS_PREFIX "%s", name);
                write_lock(&qdisc_mod_lock);
 
                ops = qdisc_lookup_default(name);
                         * go away in the mean time.
                         */
                        rtnl_unlock();
-                       request_module("sch_%s", name);
+                       request_module(NET_SCH_ALIAS_PREFIX "%s", name);
                        rtnl_lock();
                        ops = qdisc_lookup_ops(kind);
                        if (ops != NULL) {