]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: upgrade mode in udev_node_apply_permissions_impl()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 5 Apr 2022 17:20:11 +0000 (02:20 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 6 Apr 2022 05:46:13 +0000 (14:46 +0900)
src/udev/udev-event.c
src/udev/udev-node.c

index d9af8bfd203fedd6534c12205b752e435ee765b0..78e8f3018c59558002018fb8813731600c7bbf90 100644 (file)
@@ -966,9 +966,6 @@ static int update_devnode(UdevEvent *event) {
                 if (r < 0 && r != -ENOENT)
                         return log_device_error_errno(dev, r, "Failed to get devnode mode: %m");
         }
-        if (event->mode == MODE_INVALID && gid_is_valid(event->gid) && event->gid > 0)
-                /* If group is set, but mode is not set, "upgrade" mode for the group. */
-                event->mode = 0660;
 
         bool apply_mac = device_for_action(dev, SD_DEVICE_ADD);
 
index 83d3242a250c63310b85530295a19f6761b9ada7..493feffe0087fcfe075bbc32954b5eef9d97935b 100644 (file)
@@ -610,6 +610,10 @@ static int udev_node_apply_permissions_impl(
         if (fstat(node_fd, &stats) < 0)
                 return log_device_debug_errno(dev, errno, "cannot stat() node %s: %m", devnode);
 
+        /* If group is set, but mode is not set, "upgrade" mode for the group. */
+        if (mode == MODE_INVALID && gid_is_valid(gid) && gid > 0)
+                mode = 0660;
+
         apply_mode = mode != MODE_INVALID && (stats.st_mode & 0777) != (mode & 0777);
         apply_uid = uid_is_valid(uid) && stats.st_uid != uid;
         apply_gid = gid_is_valid(gid) && stats.st_gid != gid;