[PATCH] add MANAGED_EVENT to the forked udev environment

This will prevent a loop, if udev sends events back into the
daemon.
This commit is contained in:
kay.sievers@vrfy.org
2005-04-26 22:35:00 -07:00
committed by Greg KH
parent a97b06483e
commit 6f59ed5547
3 changed files with 10 additions and 3 deletions
+2 -1
View File
@@ -291,7 +291,7 @@ static void handle_udevsend_msg(int sock)
/* copy environment buffer and reconstruct envp */
memcpy(msg->envbuf, usend_msg.envbuf, envbuf_size);
bufpos = 0;
for (i = 0; (bufpos < envbuf_size) && (i < HOTPLUG_NUM_ENVP-1); i++) {
for (i = 0; (bufpos < envbuf_size) && (i < HOTPLUG_NUM_ENVP-2); i++) {
int keylen;
char *key;
@@ -314,6 +314,7 @@ static void handle_udevsend_msg(int sock)
if (strncmp(key, "SEQNUM=", 7) == 0)
msg->seqnum = strtoull(&key[7], NULL, 10);
}
msg->envp[i++] = "MANAGED_EVENT=1";
msg->envp[i] = NULL;
/* if no seqnum is given, we move straight to exec queue */
+2 -2
View File
@@ -36,7 +36,7 @@
struct udevsend_msg {
char magic[20];
char envbuf[HOTPLUG_BUFFER_SIZE];
char envbuf[HOTPLUG_BUFFER_SIZE+256];
};
struct hotplug_msg {
@@ -47,6 +47,6 @@ struct hotplug_msg {
char *devpath;
char *subsystem;
unsigned long long seqnum;
char *envp[HOTPLUG_NUM_ENVP];
char *envp[HOTPLUG_NUM_ENVP+1];
char envbuf[];
};
+6
View File
@@ -132,6 +132,12 @@ int main(int argc, char *argv[], char *envp[])
goto exit;
}
/* prevent loops in the scripts we execute */
if (getenv("MANAGED_EVENT") != NULL) {
dbg("seems that the event source is not the kernel, just exit");
goto exit;
}
sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (sock == -1) {
dbg("error getting socket");