From: Yu Watanabe Date: Tue, 5 Apr 2022 17:20:11 +0000 (+0900) Subject: udev: upgrade mode in udev_node_apply_permissions_impl() X-Git-Tag: v251-rc2~184^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e5ddfe3ec586c9ab174d39f4b6202155d92d24e4;p=thirdparty%2Fsystemd.git udev: upgrade mode in udev_node_apply_permissions_impl() --- diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index d9af8bfd203..78e8f3018c5 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -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); diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 83d3242a250..493feffe008 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -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;