Merge pull request #10927 from yuwata/udev-ctrl-cleanup

udev: update log messages and fix coding style issues
This commit is contained in:
Lennart Poettering 2018-11-26 14:23:28 +01:00 committed by GitHub
commit a7f71a01b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 117 additions and 116 deletions

View file

@ -574,7 +574,7 @@ static int set_sset(int fd, struct ifreq *ifr, const struct ethtool_link_usettin
/* If autonegotiation is disabled, the speed and duplex represent the fixed link /* If autonegotiation is disabled, the speed and duplex represent the fixed link
* mode and are writable if the driver supports multiple link modes. If it is * mode and are writable if the driver supports multiple link modes. If it is
* enabled then they are read-only. If the link is up they represent the negotiated * enabled then they are read-only. If the link is up they represent the negotiated
* link mode; if the link is down, the speed is 0, %SPEED_UNKNOWN or the highest * link mode; if the link is down, the speed is 0, %SPEED_UNKNOWN or the highest
* enabled speed and @duplex is %DUPLEX_UNKNOWN or the best enabled duplex mode. * enabled speed and @duplex is %DUPLEX_UNKNOWN or the best enabled duplex mode.
*/ */

View file

@ -370,7 +370,7 @@ int link_config_apply(link_config_ctx *ctx, link_config *config,
if (r < 0) { if (r < 0) {
if (config->port != _NET_DEV_PORT_INVALID) if (config->port != _NET_DEV_PORT_INVALID)
log_warning_errno(r, "Could not set port (%s) of %s: %m", port_to_string(config->port), old_name); log_warning_errno(r, "Could not set port (%s) of %s: %m", port_to_string(config->port), old_name);
if (!eqzero(config->advertise)) if (!eqzero(config->advertise))
log_warning_errno(r, "Could not set advertise mode: %m"); /* TODO: include modes in the log message. */ log_warning_errno(r, "Could not set advertise mode: %m"); /* TODO: include modes in the log message. */

View file

@ -193,7 +193,7 @@ static int builtin_keyboard(sd_device *dev, int argc, char *argv[], bool test) {
keycode++; keycode++;
release[release_count] = scancode; release[release_count] = scancode;
if (release_count < ELEMENTSOF(release)-1) if (release_count < ELEMENTSOF(release)-1)
release_count++; release_count++;
if (keycode[0] == '\0') if (keycode[0] == '\0')

View file

@ -76,14 +76,14 @@ struct udev_ctrl *udev_ctrl_new_from_fd(int fd) {
int r; int r;
uctrl = new0(struct udev_ctrl, 1); uctrl = new0(struct udev_ctrl, 1);
if (uctrl == NULL) if (!uctrl)
return NULL; return NULL;
uctrl->n_ref = 1; uctrl->n_ref = 1;
if (fd < 0) { if (fd < 0) {
uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0); uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
if (uctrl->sock < 0) { if (uctrl->sock < 0) {
log_error_errno(errno, "error getting socket: %m"); log_error_errno(errno, "Failed to create socket: %m");
udev_ctrl_unref(uctrl); udev_ctrl_unref(uctrl);
return NULL; return NULL;
} }
@ -98,7 +98,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(int fd) {
*/ */
r = setsockopt_int(uctrl->sock, SOL_SOCKET, SO_PASSCRED, true); r = setsockopt_int(uctrl->sock, SOL_SOCKET, SO_PASSCRED, true);
if (r < 0) if (r < 0)
log_warning_errno(r, "could not set SO_PASSCRED: %m"); log_warning_errno(r, "Failed to set SO_PASSCRED: %m");
uctrl->saddr.un = (struct sockaddr_un) { uctrl->saddr.un = (struct sockaddr_un) {
.sun_family = AF_UNIX, .sun_family = AF_UNIX,
@ -124,11 +124,11 @@ int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl) {
} }
if (err < 0) if (err < 0)
return log_error_errno(errno, "bind failed: %m"); return log_error_errno(errno, "Failed to bind socket: %m");
err = listen(uctrl->sock, 0); err = listen(uctrl->sock, 0);
if (err < 0) if (err < 0)
return log_error_errno(errno, "listen failed: %m"); return log_error_errno(errno, "Failed to listen: %m");
uctrl->bound = true; uctrl->bound = true;
uctrl->cleanup_socket = true; uctrl->cleanup_socket = true;
@ -147,7 +147,7 @@ DEFINE_PRIVATE_TRIVIAL_REF_FUNC(struct udev_ctrl, udev_ctrl);
DEFINE_TRIVIAL_UNREF_FUNC(struct udev_ctrl, udev_ctrl, udev_ctrl_free); DEFINE_TRIVIAL_UNREF_FUNC(struct udev_ctrl, udev_ctrl, udev_ctrl_free);
int udev_ctrl_cleanup(struct udev_ctrl *uctrl) { int udev_ctrl_cleanup(struct udev_ctrl *uctrl) {
if (uctrl == NULL) if (!uctrl)
return 0; return 0;
if (uctrl->cleanup_socket) if (uctrl->cleanup_socket)
sockaddr_un_unlink(&uctrl->saddr.un); sockaddr_un_unlink(&uctrl->saddr.un);
@ -155,7 +155,7 @@ int udev_ctrl_cleanup(struct udev_ctrl *uctrl) {
} }
int udev_ctrl_get_fd(struct udev_ctrl *uctrl) { int udev_ctrl_get_fd(struct udev_ctrl *uctrl) {
if (uctrl == NULL) if (!uctrl)
return -EINVAL; return -EINVAL;
return uctrl->sock; return uctrl->sock;
} }
@ -166,7 +166,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) {
int r; int r;
conn = new(struct udev_ctrl_connection, 1); conn = new(struct udev_ctrl_connection, 1);
if (conn == NULL) if (!conn)
return NULL; return NULL;
conn->n_ref = 1; conn->n_ref = 1;
conn->uctrl = uctrl; conn->uctrl = uctrl;
@ -174,25 +174,25 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) {
conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
if (conn->sock < 0) { if (conn->sock < 0) {
if (errno != EINTR) if (errno != EINTR)
log_error_errno(errno, "unable to receive ctrl connection: %m"); log_error_errno(errno, "Failed to receive ctrl connection: %m");
goto err; goto err;
} }
/* check peer credential of connection */ /* check peer credential of connection */
r = getpeercred(conn->sock, &ucred); r = getpeercred(conn->sock, &ucred);
if (r < 0) { if (r < 0) {
log_error_errno(r, "unable to receive credentials of ctrl connection: %m"); log_error_errno(r, "Failed to receive credentials of ctrl connection: %m");
goto err; goto err;
} }
if (ucred.uid > 0) { if (ucred.uid > 0) {
log_error("sender uid="UID_FMT", message ignored", ucred.uid); log_error("Sender uid="UID_FMT", message ignored", ucred.uid);
goto err; goto err;
} }
/* enable receiving of the sender credentials in the messages */ /* enable receiving of the sender credentials in the messages */
r = setsockopt_int(conn->sock, SOL_SOCKET, SO_PASSCRED, true); r = setsockopt_int(conn->sock, SOL_SOCKET, SO_PASSCRED, true);
if (r < 0) if (r < 0)
log_warning_errno(r, "could not set SO_PASSCRED: %m"); log_warning_errno(r, "Failed to set SO_PASSCRED: %m");
udev_ctrl_ref(uctrl); udev_ctrl_ref(uctrl);
return conn; return conn;
@ -220,7 +220,7 @@ static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int
ctrl_msg_wire.magic = UDEV_CTRL_MAGIC; ctrl_msg_wire.magic = UDEV_CTRL_MAGIC;
ctrl_msg_wire.type = type; ctrl_msg_wire.type = type;
if (buf != NULL) if (buf)
strscpy(ctrl_msg_wire.buf, sizeof(ctrl_msg_wire.buf), buf); strscpy(ctrl_msg_wire.buf, sizeof(ctrl_msg_wire.buf), buf);
else else
ctrl_msg_wire.intval = intval; ctrl_msg_wire.intval = intval;
@ -245,7 +245,7 @@ static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int
pfd[0].fd = uctrl->sock; pfd[0].fd = uctrl->sock;
pfd[0].events = POLLIN; pfd[0].events = POLLIN;
r = poll(pfd, 1, timeout * MSEC_PER_SEC); r = poll(pfd, 1, timeout * MSEC_PER_SEC);
if (r < 0) { if (r < 0) {
if (errno == EINTR) if (errno == EINTR)
continue; continue;
err = -errno; err = -errno;
@ -312,7 +312,7 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) {
struct ucred *cred; struct ucred *cred;
uctrl_msg = new0(struct udev_ctrl_msg, 1); uctrl_msg = new0(struct udev_ctrl_msg, 1);
if (uctrl_msg == NULL) if (!uctrl_msg)
return NULL; return NULL;
uctrl_msg->n_ref = 1; uctrl_msg->n_ref = 1;
uctrl_msg->conn = conn; uctrl_msg->conn = conn;
@ -327,16 +327,16 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) {
pfd[0].events = POLLIN; pfd[0].events = POLLIN;
r = poll(pfd, 1, 10000); r = poll(pfd, 1, 10000);
if (r < 0) { if (r < 0) {
if (errno == EINTR) if (errno == EINTR)
continue; continue;
goto err; goto err;
} else if (r == 0) { } else if (r == 0) {
log_error("timeout waiting for ctrl message"); log_error("Timeout waiting for ctrl message");
goto err; goto err;
} else { } else {
if (!(pfd[0].revents & POLLIN)) { if (!(pfd[0].revents & POLLIN)) {
log_error_errno(errno, "ctrl connection error: %m"); log_error("Invalid ctrl connection: %m");
goto err; goto err;
} }
} }
@ -348,8 +348,8 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) {
iov.iov_len = sizeof(struct udev_ctrl_msg_wire); iov.iov_len = sizeof(struct udev_ctrl_msg_wire);
size = recvmsg(conn->sock, &smsg, 0); size = recvmsg(conn->sock, &smsg, 0);
if (size < 0) { if (size < 0) {
log_error_errno(errno, "unable to receive ctrl message: %m"); log_error_errno(errno, "Failed to receive ctrl message: %m");
goto err; goto err;
} }
@ -357,20 +357,20 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) {
cmsg = CMSG_FIRSTHDR(&smsg); cmsg = CMSG_FIRSTHDR(&smsg);
if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { if (!cmsg || cmsg->cmsg_type != SCM_CREDENTIALS) {
log_error("no sender credentials received, message ignored"); log_error("No sender credentials received, ignoring message");
goto err; goto err;
} }
cred = (struct ucred *) CMSG_DATA(cmsg); cred = (struct ucred *) CMSG_DATA(cmsg);
if (cred->uid != 0) { if (cred->uid != 0) {
log_error("sender uid="UID_FMT", message ignored", cred->uid); log_error("Sender uid="UID_FMT", ignoring message", cred->uid);
goto err; goto err;
} }
if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) { if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) {
log_error("message magic 0x%08x doesn't match, ignore it", uctrl_msg->ctrl_msg_wire.magic); log_error("Message magic 0x%08x doesn't match, ignoring", uctrl_msg->ctrl_msg_wire.magic);
goto err; goto err;
} }

View file

@ -25,6 +25,7 @@
#include "glob-util.h" #include "glob-util.h"
#include "libudev-util.h" #include "libudev-util.h"
#include "mkdir.h" #include "mkdir.h"
#include "parse-util.h"
#include "path-util.h" #include "path-util.h"
#include "proc-cmdline.h" #include "proc-cmdline.h"
#include "stat-util.h" #include "stat-util.h"
@ -202,7 +203,7 @@ struct token {
union { union {
unsigned attr_off; unsigned attr_off;
unsigned rule_goto; unsigned rule_goto;
mode_t mode; mode_t mode;
uid_t uid; uid_t uid;
gid_t gid; gid_t gid;
int devlink_prio; int devlink_prio;
@ -233,7 +234,7 @@ static const char *operation_str(enum operation_type type) {
[OP_REMOVE] = "remove", [OP_REMOVE] = "remove",
[OP_ASSIGN] = "assign", [OP_ASSIGN] = "assign",
[OP_ASSIGN_FINAL] = "assign-final", [OP_ASSIGN_FINAL] = "assign-final",
} ; };
return operation_strs[type]; return operation_strs[type];
} }
@ -466,11 +467,11 @@ static int add_token(struct udev_rules *rules, struct token *token) {
return 0; return 0;
} }
static void log_unknown_owner(int error, const char *entity, const char *owner) { static void log_unknown_owner(sd_device *dev, int error, const char *entity, const char *owner) {
if (IN_SET(abs(error), ENOENT, ESRCH)) if (IN_SET(abs(error), ENOENT, ESRCH))
log_error("Specified %s '%s' unknown", entity, owner); log_device_error(dev, "Specified %s '%s' unknown", entity, owner);
else else
log_error_errno(error, "Failed to resolve %s '%s': %m", entity, owner); log_device_error_errno(dev, error, "Failed to resolve %s '%s': %m", entity, owner);
} }
static uid_t add_uid(struct udev_rules *rules, const char *owner) { static uid_t add_uid(struct udev_rules *rules, const char *owner) {
@ -489,7 +490,7 @@ static uid_t add_uid(struct udev_rules *rules, const char *owner) {
} }
r = get_user_creds(&owner, &uid, NULL, NULL, NULL, USER_CREDS_ALLOW_MISSING); r = get_user_creds(&owner, &uid, NULL, NULL, NULL, USER_CREDS_ALLOW_MISSING);
if (r < 0) if (r < 0)
log_unknown_owner(r, "user", owner); log_unknown_owner(NULL, r, "user", owner);
/* grow buffer if needed */ /* grow buffer if needed */
if (rules->uids_cur+1 >= rules->uids_max) { if (rules->uids_cur+1 >= rules->uids_max) {
@ -532,7 +533,7 @@ static gid_t add_gid(struct udev_rules *rules, const char *group) {
} }
r = get_group_creds(&group, &gid, USER_CREDS_ALLOW_MISSING); r = get_group_creds(&group, &gid, USER_CREDS_ALLOW_MISSING);
if (r < 0) if (r < 0)
log_unknown_owner(r, "group", group); log_unknown_owner(NULL, r, "group", group);
/* grow buffer if needed */ /* grow buffer if needed */
if (rules->gids_cur+1 >= rules->gids_max) { if (rules->gids_cur+1 >= rules->gids_max) {
@ -1957,10 +1958,10 @@ int udev_rules_apply_to_event(
event->program_result = mfree(event->program_result); event->program_result = mfree(event->program_result);
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), program, sizeof(program), false); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), program, sizeof(program), false);
log_debug("PROGRAM '%s' %s:%u", log_device_debug(dev, "PROGRAM '%s' %s:%u",
program, program,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
if (udev_event_spawn(event, timeout_usec, true, program, result, sizeof(result)) < 0) { if (udev_event_spawn(event, timeout_usec, true, program, result, sizeof(result)) < 0) {
if (cur->key.op != OP_NOMATCH) if (cur->key.op != OP_NOMATCH)
@ -1972,7 +1973,7 @@ int udev_rules_apply_to_event(
if (IN_SET(esc, ESCAPE_UNSET, ESCAPE_REPLACE)) { if (IN_SET(esc, ESCAPE_UNSET, ESCAPE_REPLACE)) {
count = util_replace_chars(result, UDEV_ALLOWED_CHARS_INPUT); count = util_replace_chars(result, UDEV_ALLOWED_CHARS_INPUT);
if (count > 0) if (count > 0)
log_debug("Replaced %i character(s)" , count); log_device_debug(dev, "Replaced %i character(s) from result of '%s'" , count, program);
} }
event->program_result = strdup(result); event->program_result = strdup(result);
if (cur->key.op == OP_NOMATCH) if (cur->key.op == OP_NOMATCH)
@ -1993,10 +1994,10 @@ int udev_rules_apply_to_event(
char import[UTIL_PATH_SIZE]; char import[UTIL_PATH_SIZE];
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), import, sizeof(import), false); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), import, sizeof(import), false);
log_debug("IMPORT '%s' %s:%u", log_device_debug(dev, "IMPORT '%s' %s:%u",
import, import,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
if (import_program_into_properties(event, timeout_usec, import) != 0) if (import_program_into_properties(event, timeout_usec, import) != 0)
if (cur->key.op != OP_NOMATCH) if (cur->key.op != OP_NOMATCH)
@ -2009,10 +2010,10 @@ int udev_rules_apply_to_event(
if (udev_builtin_run_once(cur->key.builtin_cmd)) { if (udev_builtin_run_once(cur->key.builtin_cmd)) {
/* check if we ran already */ /* check if we ran already */
if (event->builtin_run & (1 << cur->key.builtin_cmd)) { if (event->builtin_run & (1 << cur->key.builtin_cmd)) {
log_debug("IMPORT builtin skip '%s' %s:%u", log_device_debug(dev, "IMPORT builtin skip '%s' %s:%u",
udev_builtin_name(cur->key.builtin_cmd), udev_builtin_name(cur->key.builtin_cmd),
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
/* return the result from earlier run */ /* return the result from earlier run */
if (event->builtin_ret & (1 << cur->key.builtin_cmd)) if (event->builtin_ret & (1 << cur->key.builtin_cmd))
if (cur->key.op != OP_NOMATCH) if (cur->key.op != OP_NOMATCH)
@ -2024,16 +2025,16 @@ int udev_rules_apply_to_event(
} }
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), command, sizeof(command), false); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), command, sizeof(command), false);
log_debug("IMPORT builtin '%s' %s:%u", log_device_debug(dev, "IMPORT builtin '%s' %s:%u",
udev_builtin_name(cur->key.builtin_cmd), udev_builtin_name(cur->key.builtin_cmd),
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
r = udev_builtin_run(dev, cur->key.builtin_cmd, command, false); r = udev_builtin_run(dev, cur->key.builtin_cmd, command, false);
if (r < 0) { if (r < 0) {
/* remember failure */ /* remember failure */
log_debug_errno(r, "IMPORT builtin '%s' fails: %m", log_device_debug_errno(dev, r, "IMPORT builtin '%s' fails: %m",
udev_builtin_name(cur->key.builtin_cmd)); udev_builtin_name(cur->key.builtin_cmd));
event->builtin_ret |= (1 << cur->key.builtin_cmd); event->builtin_ret |= (1 << cur->key.builtin_cmd);
if (cur->key.op != OP_NOMATCH) if (cur->key.op != OP_NOMATCH)
goto nomatch; goto nomatch;
@ -2059,7 +2060,7 @@ int udev_rules_apply_to_event(
key = rules_str(rules, cur->key.value_off); key = rules_str(rules, cur->key.value_off);
r = proc_cmdline_get_key(key, PROC_CMDLINE_VALUE_OPTIONAL, &value); r = proc_cmdline_get_key(key, PROC_CMDLINE_VALUE_OPTIONAL, &value);
if (r < 0) if (r < 0)
log_debug_errno(r, "Failed to read %s from /proc/cmdline, ignoring: %m", key); log_device_debug_errno(dev, r, "Failed to read %s from /proc/cmdline, ignoring: %m", key);
else if (r > 0) { else if (r > 0) {
imported = true; imported = true;
@ -2118,13 +2119,13 @@ int udev_rules_apply_to_event(
event->owner_set = true; event->owner_set = true;
r = get_user_creds(&ow, &event->uid, NULL, NULL, NULL, USER_CREDS_ALLOW_MISSING); r = get_user_creds(&ow, &event->uid, NULL, NULL, NULL, USER_CREDS_ALLOW_MISSING);
if (r < 0) { if (r < 0) {
log_unknown_owner(r, "user", owner); log_unknown_owner(dev, r, "user", owner);
event->uid = 0; event->uid = 0;
} }
log_debug("OWNER %u %s:%u", log_device_debug(dev, "OWNER %u %s:%u",
event->uid, event->uid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
case TK_A_GROUP: { case TK_A_GROUP: {
@ -2139,35 +2140,35 @@ int udev_rules_apply_to_event(
event->group_set = true; event->group_set = true;
r = get_group_creds(&gr, &event->gid, USER_CREDS_ALLOW_MISSING); r = get_group_creds(&gr, &event->gid, USER_CREDS_ALLOW_MISSING);
if (r < 0) { if (r < 0) {
log_unknown_owner(r, "group", group); log_unknown_owner(dev, r, "group", group);
event->gid = 0; event->gid = 0;
} }
log_debug("GROUP %u %s:%u", log_device_debug(dev, "GROUP %u %s:%u",
event->gid, event->gid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
case TK_A_MODE: { case TK_A_MODE: {
char mode_str[UTIL_NAME_SIZE], *endptr; char mode_str[UTIL_NAME_SIZE];
mode_t mode; mode_t mode;
if (event->mode_final) if (event->mode_final)
break; break;
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), mode_str, sizeof(mode_str), false); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), mode_str, sizeof(mode_str), false);
mode = strtol(mode_str, &endptr, 8); r = parse_mode(mode_str, &mode);
if (endptr[0] != '\0') { if (r < 0) {
log_error("ignoring invalid mode '%s'", mode_str); log_device_error_errno(dev, r, "Failed to parse mode '%s': %m", mode_str);
break; break;
} }
if (cur->key.op == OP_ASSIGN_FINAL) if (cur->key.op == OP_ASSIGN_FINAL)
event->mode_final = true; event->mode_final = true;
event->mode_set = true; event->mode_set = true;
event->mode = mode; event->mode = mode;
log_debug("MODE %#o %s:%u", log_device_debug(dev, "MODE %#o %s:%u",
event->mode, event->mode,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
case TK_A_OWNER_ID: case TK_A_OWNER_ID:
@ -2177,10 +2178,10 @@ int udev_rules_apply_to_event(
event->owner_final = true; event->owner_final = true;
event->owner_set = true; event->owner_set = true;
event->uid = cur->key.uid; event->uid = cur->key.uid;
log_debug("OWNER %u %s:%u", log_device_debug(dev, "OWNER %u %s:%u",
event->uid, event->uid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
case TK_A_GROUP_ID: case TK_A_GROUP_ID:
if (event->group_final) if (event->group_final)
@ -2189,10 +2190,10 @@ int udev_rules_apply_to_event(
event->group_final = true; event->group_final = true;
event->group_set = true; event->group_set = true;
event->gid = cur->key.gid; event->gid = cur->key.gid;
log_debug("GROUP %u %s:%u", log_device_debug(dev, "GROUP %u %s:%u",
event->gid, event->gid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
case TK_A_MODE_ID: case TK_A_MODE_ID:
if (event->mode_final) if (event->mode_final)
@ -2201,10 +2202,10 @@ int udev_rules_apply_to_event(
event->mode_final = true; event->mode_final = true;
event->mode_set = true; event->mode_set = true;
event->mode = cur->key.mode; event->mode = cur->key.mode;
log_debug("MODE %#o %s:%u", log_device_debug(dev, "MODE %#o %s:%u",
event->mode, event->mode,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
case TK_A_SECLABEL: { case TK_A_SECLABEL: {
_cleanup_free_ char *name = NULL, *label = NULL; _cleanup_free_ char *name = NULL, *label = NULL;
@ -2235,10 +2236,10 @@ int udev_rules_apply_to_event(
name = label = NULL; name = label = NULL;
log_debug("SECLABEL{%s}='%s' %s:%u", log_device_debug(dev, "SECLABEL{%s}='%s' %s:%u",
name, label, name, label,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
case TK_A_ENV: { case TK_A_ENV: {
@ -2280,7 +2281,7 @@ int udev_rules_apply_to_event(
(*p >= '0' && *p <= '9') || (*p >= '0' && *p <= '9') ||
IN_SET(*p, '-', '_')) IN_SET(*p, '-', '_'))
continue; continue;
log_error("Ignoring invalid tag name '%s'", tag); log_device_error(dev, "Ignoring invalid tag name '%s'", tag);
break; break;
} }
if (cur->key.op == OP_REMOVE) if (cur->key.op == OP_REMOVE)
@ -2303,24 +2304,24 @@ int udev_rules_apply_to_event(
if (IN_SET(esc, ESCAPE_UNSET, ESCAPE_REPLACE)) { if (IN_SET(esc, ESCAPE_UNSET, ESCAPE_REPLACE)) {
count = util_replace_chars(name_str, "/"); count = util_replace_chars(name_str, "/");
if (count > 0) if (count > 0)
log_debug("Replaced %i character(s)", count); log_device_debug(dev, "Replaced %i character(s) from result of NAME=\"%s\"", count, name);
} }
if (sd_device_get_devnum(dev, NULL) >= 0 && if (sd_device_get_devnum(dev, NULL) >= 0 &&
(sd_device_get_devname(dev, &val) < 0 || (sd_device_get_devname(dev, &val) < 0 ||
!streq(name_str, val + STRLEN("/dev/")))) { !streq(name_str, val + STRLEN("/dev/")))) {
log_error("NAME=\"%s\" ignored, kernel device nodes cannot be renamed; please fix it in %s:%u\n", log_device_error(dev, "Kernel device nodes cannot be renamed, ignoring NAME=\"%s\"; please fix it in %s:%u\n",
name, name,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
if (free_and_strdup(&event->name, name_str) < 0) if (free_and_strdup(&event->name, name_str) < 0)
return log_oom(); return log_oom();
log_debug("NAME '%s' %s:%u", log_device_debug(dev, "NAME '%s' %s:%u",
event->name, event->name,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
case TK_A_DEVLINK: { case TK_A_DEVLINK: {
@ -2343,15 +2344,15 @@ int udev_rules_apply_to_event(
else if (esc == ESCAPE_REPLACE) else if (esc == ESCAPE_REPLACE)
count = util_replace_chars(temp, "/"); count = util_replace_chars(temp, "/");
if (count > 0) if (count > 0)
log_debug("Replaced %i character(s)" , count); log_device_debug(dev, "Replaced %i character(s) from result of LINK" , count);
pos = temp; pos = temp;
while (isspace(pos[0])) while (isspace(pos[0]))
pos++; pos++;
next = strchr(pos, ' '); next = strchr(pos, ' ');
while (next) { while (next) {
next[0] = '\0'; next[0] = '\0';
log_debug("LINK '%s' %s:%u", pos, log_device_debug(dev, "LINK '%s' %s:%u", pos,
rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); rules_str(rules, rule->rule.filename_off), rule->rule.filename_line);
strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); strscpyl(filename, sizeof(filename), "/dev/", pos, NULL);
device_add_devlink(dev, filename); device_add_devlink(dev, filename);
while (isspace(next[1])) while (isspace(next[1]))
@ -2360,8 +2361,8 @@ int udev_rules_apply_to_event(
next = strchr(pos, ' '); next = strchr(pos, ' ');
} }
if (pos[0] != '\0') { if (pos[0] != '\0') {
log_debug("LINK '%s' %s:%u", pos, log_device_debug(dev, "LINK '%s' %s:%u", pos,
rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); rules_str(rules, rule->rule.filename_off), rule->rule.filename_line);
strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); strscpyl(filename, sizeof(filename), "/dev/", pos, NULL);
device_add_devlink(dev, filename); device_add_devlink(dev, filename);
} }
@ -2379,14 +2380,14 @@ int udev_rules_apply_to_event(
attr_subst_subdir(attr, sizeof(attr)); attr_subst_subdir(attr, sizeof(attr));
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value), false); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value), false);
log_debug("ATTR '%s' writing '%s' %s:%u", attr, value, log_device_debug(dev, "ATTR '%s' writing '%s' %s:%u", attr, value,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
f = fopen(attr, "we"); f = fopen(attr, "we");
if (!f) if (!f)
log_error_errno(errno, "Failed to open ATTR{%s} for writing: %m", attr); log_device_error_errno(dev, errno, "Failed to open ATTR{%s} for writing: %m", attr);
else if (fprintf(f, "%s", value) <= 0) else if (fprintf(f, "%s", value) <= 0)
log_error_errno(errno, "Failed to write ATTR{%s}: %m", attr); log_device_error_errno(dev, errno, "Failed to write ATTR{%s}: %m", attr);
break; break;
} }
case TK_A_SYSCTL: { case TK_A_SYSCTL: {
@ -2395,11 +2396,11 @@ int udev_rules_apply_to_event(
udev_event_apply_format(event, rules_str(rules, cur->key.attr_off), filename, sizeof(filename), false); udev_event_apply_format(event, rules_str(rules, cur->key.attr_off), filename, sizeof(filename), false);
sysctl_normalize(filename); sysctl_normalize(filename);
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value), false); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value), false);
log_debug("SYSCTL '%s' writing '%s' %s:%u", filename, value, log_device_debug(dev, "SYSCTL '%s' writing '%s' %s:%u", filename, value,
rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); rules_str(rules, rule->rule.filename_off), rule->rule.filename_line);
r = sysctl_write(filename, value); r = sysctl_write(filename, value);
if (r < 0) if (r < 0)
log_error_errno(r, "Failed to write SYSCTL{%s}='%s': %m", filename, value); log_device_error_errno(dev, r, "Failed to write SYSCTL{%s}='%s': %m", filename, value);
break; break;
} }
case TK_A_RUN_BUILTIN: case TK_A_RUN_BUILTIN:
@ -2427,10 +2428,10 @@ int udev_rules_apply_to_event(
cmd = NULL; cmd = NULL;
log_debug("RUN '%s' %s:%u", log_device_debug(dev, "RUN '%s' %s:%u",
rules_str(rules, cur->key.value_off), rules_str(rules, cur->key.value_off),
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
break; break;
} }
case TK_A_GOTO: case TK_A_GOTO:
@ -2445,7 +2446,7 @@ int udev_rules_apply_to_event(
case TK_M_PARENTS_MAX: case TK_M_PARENTS_MAX:
case TK_M_MAX: case TK_M_MAX:
case TK_UNSET: case TK_UNSET:
log_error("Wrong type %u", cur->type); log_device_error(dev, "Wrong type %u", cur->type);
goto nomatch; goto nomatch;
} }