chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
do not remove static nodes on module unload
[elogind.git]
/
udev
/
udevd.c
diff --git
a/udev/udevd.c
b/udev/udevd.c
index 2fa2a6a48add9ce28aa692bae2657ac4ca96d0f5..f1a31e7afbb4c767e250cf6f0dd120bf33a28c58 100644
(file)
--- a/
udev/udevd.c
+++ b/
udev/udevd.c
@@
-889,10
+889,11
@@
static void static_dev_create_from_modules(struct udev *udev)
if (sscanf(devno, "%c%u:%u", &type, &maj, &min) != 3)
continue;
if (sscanf(devno, "%c%u:%u", &type, &maj, &min) != 3)
continue;
+ /* set sticky bit, so we do not remove the node on module unload */
if (type == 'c')
if (type == 'c')
- mode = 0
600 |
S_IFCHR;
+ mode = 0
1600|
S_IFCHR;
else if (type == 'b')
else if (type == 'b')
- mode = 0
600 |
S_IFBLK;
+ mode = 0
1600|
S_IFBLK;
else
continue;
else
continue;
@@
-1574,8
+1575,8
@@
int main(int argc, char *argv[])
udev_rules_apply_static_dev_perms(rules);
udev_rules_apply_static_dev_perms(rules);
- udev_list_init(&event_list);
- udev_list_init(&worker_list);
+ udev_list_
node_
init(&event_list);
+ udev_list_
node_
init(&worker_list);
for (;;) {
struct epoll_event ev[8];
for (;;) {
struct epoll_event ev[8];
@@
-1606,12
+1607,12
@@
int main(int argc, char *argv[])
worker_kill(udev, 0);
/* exit after all has cleaned up */
worker_kill(udev, 0);
/* exit after all has cleaned up */
- if (udev_list_
is_empty(&event_list) && udev_list
_is_empty(&worker_list))
+ if (udev_list_
node_is_empty(&event_list) && udev_list_node
_is_empty(&worker_list))
break;
/* timeout at exit for workers to finish */
timeout = 60 * 1000;
break;
/* timeout at exit for workers to finish */
timeout = 60 * 1000;
- } else if (udev_list_is_empty(&event_list) && children > 2) {
+ } else if (udev_list_
node_
is_empty(&event_list) && children > 2) {
/* set timeout to kill idle workers */
timeout = 3 * 1000;
} else {
/* set timeout to kill idle workers */
timeout = 3 * 1000;
} else {
@@
-1659,7
+1660,7
@@
int main(int argc, char *argv[])
}
/* start new events */
}
/* start new events */
- if (!udev_list_is_empty(&event_list) && !udev_exit && !stop_exec_queue)
+ if (!udev_list_
node_
is_empty(&event_list) && !udev_exit && !stop_exec_queue)
event_queue_start(udev);
if (is_signal) {
event_queue_start(udev);
if (is_signal) {