chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
treewide: drop unnecessary trailing \n in log_*() calls
[elogind.git]
/
src
/
udev
/
udevd.c
diff --git
a/src/udev/udevd.c
b/src/udev/udevd.c
index cd517931d342f8599bf42d9e098915bbc61857f7..a6258e714ac0d5eb62763133ce293777e37ac9d0 100644
(file)
--- a/
src/udev/udevd.c
+++ b/
src/udev/udevd.c
@@
-54,12
+54,6
@@
#include "dev-setup.h"
#include "fileio.h"
#include "dev-setup.h"
#include "fileio.h"
-void udev_main_log(struct udev *udev, int priority,
- const char *file, int line, const char *fn,
- const char *format, va_list args) {
- log_metav(priority, file, line, fn, format, args);
-}
-
static struct udev_rules *rules;
static struct udev_ctrl *udev_ctrl;
static struct udev_monitor *monitor;
static struct udev_rules *rules;
static struct udev_ctrl *udev_ctrl;
static struct udev_monitor *monitor;
@@
-81,6
+75,7
@@
static sigset_t sigmask_orig;
static UDEV_LIST(event_list);
static UDEV_LIST(worker_list);
static char *udev_cgroup;
static UDEV_LIST(event_list);
static UDEV_LIST(worker_list);
static char *udev_cgroup;
+static struct udev_list properties_list;
static bool udev_exit;
enum event_state {
static bool udev_exit;
enum event_state {
@@
-310,9
+305,15
@@
static void worker_new(struct event *event) {
udev_event->rtnl = rtnl;
/* apply rules, create node, symlinks */
udev_event->rtnl = rtnl;
/* apply rules, create node, symlinks */
- udev_event_execute_rules(udev_event, arg_event_timeout_usec, arg_event_timeout_warn_usec, rules, &sigmask_orig);
+ udev_event_execute_rules(udev_event,
+ arg_event_timeout_usec, arg_event_timeout_warn_usec,
+ &properties_list,
+ rules,
+ &sigmask_orig);
- udev_event_execute_run(udev_event, arg_event_timeout_usec, arg_event_timeout_warn_usec, &sigmask_orig);
+ udev_event_execute_run(udev_event,
+ arg_event_timeout_usec, arg_event_timeout_warn_usec,
+ &sigmask_orig);
/* in case rtnl was initialized */
rtnl = sd_rtnl_ref(udev_event->rtnl);
/* in case rtnl was initialized */
rtnl = sd_rtnl_ref(udev_event->rtnl);
@@
-644,7
+645,6
@@
static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl) {
if (i >= 0) {
log_debug("udevd message (SET_LOG_LEVEL) received, log_priority=%i", i);
log_set_max_level(i);
if (i >= 0) {
log_debug("udevd message (SET_LOG_LEVEL) received, log_priority=%i", i);
log_set_max_level(i);
- udev_set_log_priority(udev, i);
worker_kill(udev);
}
worker_kill(udev);
}
@@
-677,10
+677,10
@@
static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl) {
val = &val[1];
if (val[0] == '\0') {
log_debug("udevd message (ENV) received, unset '%s'", key);
val = &val[1];
if (val[0] == '\0') {
log_debug("udevd message (ENV) received, unset '%s'", key);
- udev_
add_property(udev
, key, NULL);
+ udev_
list_entry_add(&properties_list
, key, NULL);
} else {
log_debug("udevd message (ENV) received, set '%s=%s'", key, val);
} else {
log_debug("udevd message (ENV) received, set '%s=%s'", key, val);
- udev_
add_property(udev
, key, val);
+ udev_
list_entry_add(&properties_list
, key, val);
}
} else {
log_error("wrong key format '%s'", key);
}
} else {
log_error("wrong key format '%s'", key);
@@
-949,7
+949,7
@@
static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink) {
}
/*
}
/*
- * read the kernel commandline, in case we need to get into debug mode
+ * read the kernel command
line, in case we need to get into debug mode
* udev.log-priority=<level> syslog priority
* udev.children-max=<number of workers> events are fully serialized if set to 1
* udev.exec-delay=<number of seconds> delay execution of every executed program
* udev.log-priority=<level> syslog priority
* udev.children-max=<number of workers> events are fully serialized if set to 1
* udev.exec-delay=<number of seconds> delay execution of every executed program
@@
-961,13
+961,13
@@
static void kernel_cmdline_options(struct udev *udev) {
int r;
r = proc_cmdline(&line);
int r;
r = proc_cmdline(&line);
- if (r < 0)
- log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
- if (r <= 0)
+ if (r < 0) {
+ log_warning_errno(r, "Failed to read /proc/cmdline, ignoring: %m");
return;
return;
+ }
FOREACH_WORD_QUOTED(word, l, line, state) {
FOREACH_WORD_QUOTED(word, l, line, state) {
- char *s, *opt;
+ char *s, *opt
, *value
;
s = strndup(word, l);
if (!s)
s = strndup(word, l);
if (!s)
@@
-979,24
+979,23
@@
static void kernel_cmdline_options(struct udev *udev) {
else
opt = s;
else
opt = s;
- if (
startswith(opt, "udev.log-priority="
)) {
+ if (
(value = startswith(opt, "udev.log-priority=")
)) {
int prio;
int prio;
- prio = util_log_priority(
opt + 18
);
+ prio = util_log_priority(
value
);
log_set_max_level(prio);
log_set_max_level(prio);
- udev_set_log_priority(udev, prio);
- } else if (startswith(opt, "udev.children-max=")) {
- r = safe_atoi(opt + 18, &arg_children_max);
+ } else if ((value = startswith(opt, "udev.children-max="))) {
+ r = safe_atoi(value, &arg_children_max);
if (r < 0)
if (r < 0)
- log_warning("Invalid udev.children-max ignored: %s",
opt + 18
);
- } else if (
startswith(opt, "udev.exec-delay="
)) {
- r = safe_atoi(
opt + 16
, &arg_exec_delay);
+ log_warning("Invalid udev.children-max ignored: %s",
value
);
+ } else if (
(value = startswith(opt, "udev.exec-delay=")
)) {
+ r = safe_atoi(
value
, &arg_exec_delay);
if (r < 0)
if (r < 0)
- log_warning("Invalid udev.exec-delay ignored: %s",
opt + 16
);
- } else if (
startswith(opt, "udev.event-timeout="
)) {
- r = safe_atou64(
opt + 16
, &arg_event_timeout_usec);
+ log_warning("Invalid udev.exec-delay ignored: %s",
value
);
+ } else if (
(value = startswith(opt, "udev.event-timeout=")
)) {
+ r = safe_atou64(
value
, &arg_event_timeout_usec);
if (r < 0) {
if (r < 0) {
- log_warning("Invalid udev.event-timeout ignored: %s",
opt + 16
);
+ log_warning("Invalid udev.event-timeout ignored: %s",
value
);
break;
}
arg_event_timeout_usec *= USEC_PER_SEC;
break;
}
arg_event_timeout_usec *= USEC_PER_SEC;
@@
-1048,17
+1047,23
@@
static int parse_argv(int argc, char *argv[]) {
arg_daemonize = true;
break;
case 'c':
arg_daemonize = true;
break;
case 'c':
- safe_atoi(optarg, &arg_children_max);
+ r = safe_atoi(optarg, &arg_children_max);
+ if (r < 0)
+ log_warning("Invalid --children-max ignored: %s", optarg);
break;
case 'e':
break;
case 'e':
- safe_atoi(optarg, &arg_exec_delay);
+ r = safe_atoi(optarg, &arg_exec_delay);
+ if (r < 0)
+ log_warning("Invalid --exec-delay ignored: %s", optarg);
break;
case 't':
r = safe_atou64(optarg, &arg_event_timeout_usec);
if (r < 0)
break;
case 't':
r = safe_atou64(optarg, &arg_event_timeout_usec);
if (r < 0)
- break;
- arg_event_timeout_usec *= USEC_PER_SEC;
- arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1;
+ log_warning("Invalid --event-timeout ignored: %s", optarg);
+ else {
+ arg_event_timeout_usec *= USEC_PER_SEC;
+ arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1;
+ }
break;
case 'D':
arg_debug = true;
break;
case 'D':
arg_debug = true;
@@
-1114,32
+1119,42
@@
int main(int argc, char *argv[]) {
log_parse_environment();
log_open();
log_parse_environment();
log_open();
- udev_set_log_fn(udev, udev_main_log);
- log_set_max_level(udev_get_log_priority(udev));
-
r = parse_argv(argc, argv);
if (r <= 0)
goto exit;
kernel_cmdline_options(udev);
r = parse_argv(argc, argv);
if (r <= 0)
goto exit;
kernel_cmdline_options(udev);
- if (arg_debug)
{
+ if (arg_debug)
log_set_max_level(LOG_DEBUG);
log_set_max_level(LOG_DEBUG);
- udev_set_log_priority(udev, LOG_DEBUG);
- }
if (getuid() != 0) {
log_error("root privileges required");
goto exit;
}
if (getuid() != 0) {
log_error("root privileges required");
goto exit;
}
- label_init("/dev");
+ r = mac_selinux_init("/dev");
+ if (r < 0) {
+ log_error_errno(r, "could not initialize labelling: %m");
+ goto exit;
+ }
/* set umask before creating any file/directory */
/* set umask before creating any file/directory */
- chdir("/");
+ r = chdir("/");
+ if (r < 0) {
+ log_error("could not change dir to /: %m");
+ goto exit;
+ }
+
umask(022);
umask(022);
- mkdir("/run/udev", 0755);
+ udev_list_init(udev, &properties_list, true);
+
+ r = mkdir("/run/udev", 0755);
+ if (r < 0 && errno != EEXIST) {
+ log_error("could not create /run/udev: %m");
+ goto exit;
+ }
dev_setup(NULL);
dev_setup(NULL);
@@
-1212,7
+1227,7
@@
int main(int argc, char *argv[]) {
udev_monitor_set_receive_buffer_size(monitor, 128 * 1024 * 1024);
udev_monitor_set_receive_buffer_size(monitor, 128 * 1024 * 1024);
- log_info("starting version " VERSION
"\n"
);
+ log_info("starting version " VERSION);
udev_builtin_init(udev);
udev_builtin_init(udev);
@@
-1224,7
+1239,7
@@
int main(int argc, char *argv[]) {
rc = udev_rules_apply_static_dev_perms(rules);
if (rc < 0)
rc = udev_rules_apply_static_dev_perms(rules);
if (rc < 0)
- log_error
("failed to apply permissions on static device nodes - %s", strerror(-rc)
);
+ log_error
_errno(rc, "failed to apply permissions on static device nodes - %m"
);
if (arg_daemonize) {
pid_t pid;
if (arg_daemonize) {
pid_t pid;
@@
-1523,7
+1538,8
@@
exit_daemonize:
udev_monitor_unref(monitor);
udev_ctrl_connection_unref(ctrl_conn);
udev_ctrl_unref(udev_ctrl);
udev_monitor_unref(monitor);
udev_ctrl_connection_unref(ctrl_conn);
udev_ctrl_unref(udev_ctrl);
- label_finish();
+ udev_list_cleanup(&properties_list);
+ mac_selinux_finish();
udev_unref(udev);
log_close();
return rc;
udev_unref(udev);
log_close();
return rc;