X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev%2Fudevd.c;h=43937db8903a5aa0742717a564098111ce59b9d4;hp=162551098ba67f4a26501a2d39fd627506c0cba4;hb=667e392408d6b56db981d8e76c31990501d0faf3;hpb=5ba2dc259f3cdd8fddef68cfd28380a32534e49a diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 162551098..43937db89 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -99,13 +99,9 @@ struct event { int ifindex; }; -static struct event *node_to_event(struct udev_list_node *node) +static inline struct event *node_to_event(struct udev_list_node *node) { - char *event; - - event = (char *)node; - event -= offsetof(struct event, node); - return (struct event *)event; + return container_of(node, struct event, node); } static void event_queue_cleanup(struct udev *udev, enum event_state type); @@ -134,13 +130,9 @@ struct worker_message { int exitcode; }; -static struct worker *node_to_worker(struct udev_list_node *node) +static inline struct worker *node_to_worker(struct udev_list_node *node) { - char *worker; - - worker = (char *)node; - worker -= offsetof(struct worker, node); - return (struct worker *)worker; + return container_of(node, struct worker, node); } static void event_queue_delete(struct event *event, bool export) @@ -858,7 +850,7 @@ static void static_dev_create_from_modules(struct udev *udev) continue; util_strscpyl(filename, sizeof(filename), "/dev/", devname, NULL); - mkdir_parents(filename, 0755); + mkdir_parents_label(filename, 0755); label_context_set(filename, mode); log_debug("mknod '%s' %c%u:%u\n", filename, type, maj, min); if (mknod(filename, mode, makedev(maj, min)) < 0 && errno == EEXIST) @@ -1038,6 +1030,7 @@ int main(int argc, char *argv[]) int fd_ctrl = -1; int fd_netlink = -1; int fd_worker = -1; + const char *prefixes[] = { "/dev", "/run", NULL }; struct epoll_event ep_ctrl, ep_inotify, ep_signal, ep_netlink, ep_worker; struct udev_ctrl_connection *ctrl_conn = NULL; int rc = 1; @@ -1050,7 +1043,7 @@ int main(int argc, char *argv[]) log_parse_environment(); udev_set_log_fn(udev, udev_main_log); log_debug("version %s\n", VERSION); - label_init("/dev"); + label_init(prefixes); for (;;) { int option; @@ -1255,18 +1248,8 @@ int main(int argc, char *argv[]) setsid(); - fd = open("/proc/self/oom_score_adj", O_RDWR); - if (fd < 0) { - /* Fallback to old interface */ - fd = open("/proc/self/oom_adj", O_RDWR); - if (fd < 0) { - log_error("error disabling OOM: %m\n"); - } else { - /* OOM_DISABLE == -17 */ - write(fd, "-17", 3); - close(fd); - } - } else { + fd = open("/proc/self/oom_score_adj", O_RDWR|O_CLOEXEC); + if (fd >= 0) { write(fd, "-1000", 5); close(fd); }