]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-node: fix misleading log messages 13253/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 2 Aug 2019 21:04:34 +0000 (06:04 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 2 Aug 2019 21:04:40 +0000 (06:04 +0900)
This fixes the following logs:
```
drm_dp_aux2: Handling device node '/dev/drm_dp_aux2', devnum=c238:2, mode=037777777777, uid=4294967295, gid=4294967295
drm_dp_aux2: Preserve permissions of /dev/drm_dp_aux2, 037777777777, uid=4294967295, gid=4294967295
```

src/udev/udev-node.c

index 7e3447f7fa355b763d6d61535f8effab7ad2287d..f161402f3aecdb440bf939ad9c94153e5cfaa22d 100644 (file)
@@ -316,14 +316,25 @@ static int node_permissions_apply(sd_device *dev, bool apply_mac,
                 Iterator i;
 
                 if (apply_mode || apply_uid || apply_gid) {
-                        log_device_debug(dev, "Setting permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
+                        log_device_debug(dev, "Setting permissions %s, uid=" UID_FMT ", gid=" GID_FMT ", mode=%#o",
+                                         devnode,
+                                         uid_is_valid(uid) ? uid : stats.st_uid,
+                                         gid_is_valid(gid) ? gid : stats.st_gid,
+                                         mode != MODE_INVALID ? mode & 0777 : stats.st_mode & 0777);
 
                         r = chmod_and_chown(devnode, mode, uid, gid);
                         if (r < 0)
                                 log_device_warning_errno(dev, r, "Failed to set owner/mode of %s to uid=" UID_FMT ", gid=" GID_FMT ", mode=%#o: %m",
-                                                         devnode, uid, gid, mode);
+                                                         devnode,
+                                                         uid_is_valid(uid) ? uid : stats.st_uid,
+                                                         gid_is_valid(gid) ? gid : stats.st_gid,
+                                                         mode != MODE_INVALID ? mode & 0777 : stats.st_mode & 0777);
                 } else
-                        log_device_debug(dev, "Preserve permissions of %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
+                        log_device_debug(dev, "Preserve permissions of %s, uid=" UID_FMT ", gid=" GID_FMT ", mode=%#o",
+                                         devnode,
+                                         uid_is_valid(uid) ? uid : stats.st_uid,
+                                         gid_is_valid(gid) ? gid : stats.st_gid,
+                                         mode != MODE_INVALID ? mode & 0777 : stats.st_mode & 0777);
 
                 /* apply SECLABEL{$module}=$label */
                 ORDERED_HASHMAP_FOREACH_KEY(label, name, seclabel_list, i) {
@@ -409,8 +420,7 @@ int udev_node_add(sd_device *dev, bool apply,
                 const char *id_filename = NULL;
 
                 (void) device_get_id_filename(dev, &id_filename);
-                log_device_debug(dev, "Handling device node '%s', devnum=%s, mode=%#o, uid="UID_FMT", gid="GID_FMT,
-                                 devnode, strnull(id_filename), mode, uid, gid);
+                log_device_debug(dev, "Handling device node '%s', devnum=%s", devnode, strnull(id_filename));
         }
 
         r = node_permissions_apply(dev, apply, mode, uid, gid, seclabel_list);