linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Per Svennerbrandt <per.svennerbrandt@lbi.se>
To: Per Liden <per@fukt.bth.se>, Greg KH <greg@kroah.com>
Cc: linux-hotplug-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: [PATCH][RFC] request_modalias: MODALIAS based module loading
Date: Wed, 18 May 2005 23:01:20 +0000	[thread overview]
Message-ID: <20050518230120.GC3011@tsiryulnik> (raw)
In-Reply-To: <Pine.LNX.4.63.0505102351300.8637@1-1-2-5a.f.sth.bostream.se>

Ok, so here finally goes:

The following adds a new function called request_modalias to
lib/kobject_uevent.c and makes the kobject hotplug function call it
whenever it gets called in response of an addition.

Warning: The following also contains perhaps the worst abuse of strcmp
ever to be recorded in the history of public mailinglists, so beware!!!

This is the kind of stuff that has the potential for making pretty much
anyone with only even the slightest hint of technical good taste,
myself included, quickly rush for their b-p-b with a horrid expression
on their faces and a thought on their minds about what's becomming of
the world.

On the other hand it also made the patch so nonintrusive that, for a
proof-of-consept kind of thing, I just couldn't resist it. It also has
the added benefit of making the various subsystems virtually "plug and
play": As soon as they start exporting MODALIAS to the hotplug
enviroment request_module will also, if activated, start requesting
modules for them.

Let's hope I'm not prematurely ending the lives of too many brave brown
paper bags out there.

Signed-off-by: Per Svennerbrandt <per.svennerbrandt@lbi.se>

--- linux-2.6.12-rc2/lib/kobject_uevent.c.orig	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc2/lib/kobject_uevent.c	2005-05-13 00:13:39.000000000 +0200
@@ -19,6 +19,7 @@
 #include <linux/skbuff.h>
 #include <linux/netlink.h>
 #include <linux/string.h>
+#include <linux/kmod.h>
 #include <linux/kobject_uevent.h>
 #include <linux/kobject.h>
 #include <net/sock.h>
@@ -175,6 +176,26 @@
 
 #endif /* CONFIG_KOBJECT_UEVENT */
 
+#ifdef CONFIG_REQUEST_MODALIAS
+/**
+ * request_modalias - try to load any modules specified 
+ * by MODALIAS in the enviroment
+ * @envp: pointer to an enviroment possibly containing a MODALIAS
+ */
+static void request_modalias(char **envp)
+{
+	int i, len = strlen("MODALIAS=");
+	
+	if (envp = NULL) return;
+	
+	for (i = 0; envp[i]; i++)
+		if (!strncmp(envp[i], "MODALIAS=", len))
+			__request_module(envp[i] + len, 0);
+}
+
+#else
+static void request_modalias(char **envp) { }
+#endif /* CONFIG_REQUEST_MODALIAS */
 
 #ifdef CONFIG_HOTPLUG
 char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug";
@@ -297,6 +318,10 @@ void kobject_hotplug(struct kobject *kob
 		  __FUNCTION__, argv[0], argv[1], (unsigned long long)seq,
 		  envp[0], envp[1], envp[2], envp[3], envp[4]);
 
+	if (action = KOBJ_ADD)
+		/* since we didn't specify MODALIAS here, it must be beyond i */
+		request_modalias(envp + i);
+
 	send_uevent(action_string, kobj_path, envp, GFP_KERNEL);
 
 	if (!hotplug_path[0])

Here's also a patch to the relevant Kconfig to enable it:

--- linux-2.6.12-rc2/init/Kconfig.orig	2005-05-06 23:42:20.000000000 +0200
+++ linux-2.6.12-rc2/init/Kconfig	2005-05-07 12:16:28.000000000 +0200
@@ -454,6 +454,15 @@
 	  runs modprobe with the appropriate arguments, thereby
 	  loading the module if it is available.  If unsure, say Y.
 
+config REQUEST_MODALIAS
+	bool "MODALIAS based module loading"
+	depends on KMOD && HOTPLUG
+	help
+	  If you say Y here, the resulting kernel will also be able to 
+	  load the modules for most types of hardware attached to buses 
+	  such as PCI, USB and PCMCIA automatically, based on 
+	  information contained in their "module aliases".
+
 config STOP_MACHINE
 	bool
 	default y


-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_idt12&alloc_id\x16344&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

  parent reply	other threads:[~2005-05-18 23:01 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-06 21:22 [ANNOUNCE] hotplug-ng 002 release Greg KH
2005-05-08 22:52 ` Per Liden
2005-05-09 21:13   ` Per Svennerbrandt
2005-05-10 22:17     ` Per Liden
2005-05-10 22:41       ` Greg KH
2005-05-10 23:56         ` Per Liden
2005-05-11  1:22           ` Brian Gerst
2005-05-11  5:33           ` Greg KH
2005-05-18 23:00       ` Per Svennerbrandt
2005-05-18 23:00       ` [PATCH][RFC] __request_module: fixed argument request_module with waitflag Per Svennerbrandt
2005-05-18 23:01       ` Per Svennerbrandt [this message]
2005-05-18 23:37         ` [PATCH][RFC] request_modalias: MODALIAS based module loading Per Svennerbrandt
2005-05-10 22:41     ` [ANNOUNCE] hotplug-ng 002 release Greg KH
2005-05-12 21:42     ` Greg KH
2005-05-13  8:19       ` Michael Tokarev
2005-05-13 16:02         ` Greg KH
2005-05-13 23:21       ` Per Svennerbrandt
2005-05-14  5:59         ` Greg KH
2005-05-18  9:27     ` David Weinehall
2005-05-09 23:22   ` Greg KH
2005-05-10 21:51     ` Per Liden
2005-05-11  5:36       ` Greg KH
2005-05-09  3:57 ` Rusty Russell
2005-05-09 23:21   ` Greg KH
2005-05-10  9:29     ` Rusty Russell
2005-05-10  9:43       ` Marco d'Itri
2005-05-10 12:58         ` Alexander E. Patrakov
2005-05-10 17:24           ` Marco d'Itri
2005-05-10 20:13             ` Greg KH
2005-05-10 20:28               ` Lee Revell
2005-05-10 20:59                 ` Greg KH
2005-05-10 21:02                   ` Marco d'Itri
2005-05-10 20:31               ` Marco d'Itri
2005-05-10 20:52                 ` Greg KH
2005-05-10 20:59                   ` Bill Nottingham
2005-05-10 21:08                   ` Marco d'Itri
2005-05-10 21:22                     ` Erik van Konijnenburg
2005-05-10 23:55                       ` [PATCH] " Erik van Konijnenburg
2005-05-11  0:05                         ` Marco d'Itri
2005-05-11  5:40                           ` Greg KH
2005-05-11  0:08                         ` [PATCH] " Rusty Russell
2005-05-11  1:11                           ` Erik van Konijnenburg
2005-05-11  3:39                             ` Rusty Russell
2005-05-11  9:59                               ` Erik van Konijnenburg
2005-05-11 10:52                                 ` Rusty Russell
2005-05-11 10:58                                   ` Marco d'Itri
2005-05-11 13:06                                     ` Erik van Konijnenburg
2005-05-12  4:39                                       ` Rusty Russell
2005-05-12  7:47                                         ` Erik van Konijnenburg
2005-05-11  0:01               ` Rusty Russell
2005-05-11  0:10                 ` Marco d'Itri
2005-05-11  1:09                   ` Rusty Russell
2005-05-11  7:31 ` Christian Zoz
2005-05-14 23:02 ` Michael Tokarev
2005-05-16 19:11   ` Greg KH
2005-05-16 21:24 ` Marco d'Itri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050518230120.GC3011@tsiryulnik \
    --to=per.svennerbrandt@lbi.se \
    --cc=greg@kroah.com \
    --cc=linux-hotplug-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=per@fukt.bth.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).