summaryrefslogtreecommitdiff
path: root/src/udev/udev-node.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-04-06 01:51:47 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-04-06 14:46:13 +0900
commita782f2a3fc4889ad7cca0a8fc77a5b0e4d5ed378 (patch)
treed75d991a2f9b9eab492093ad11c75be65c18573d /src/udev/udev-node.c
parentf14aa5ad42e05f3e9124ac5d53b847b5de1eb9c3 (diff)
downloadsystemd-a782f2a3fc4889ad7cca0a8fc77a5b0e4d5ed378.tar.gz
udev: split udev_node_apply_permissions() into two
Diffstat (limited to 'src/udev/udev-node.c')
-rw-r--r--src/udev/udev-node.c56
1 files changed, 37 insertions, 19 deletions
diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c
index 4afd604860..83d3242a25 100644
--- a/src/udev/udev-node.c
+++ b/src/udev/udev-node.c
@@ -590,35 +590,22 @@ int udev_node_remove(sd_device *dev) {
return 0;
}
-int udev_node_apply_permissions(
- sd_device *dev,
+static int udev_node_apply_permissions_impl(
+ sd_device *dev, /* can be NULL, only used for logging. */
+ int node_fd,
+ const char *devnode,
bool apply_mac,
mode_t mode,
uid_t uid,
gid_t gid,
OrderedHashmap *seclabel_list) {
- const char *devnode;
bool apply_mode, apply_uid, apply_gid;
- _cleanup_close_ int node_fd = -1;
struct stat stats;
int r;
- assert(dev);
-
- r = sd_device_get_devname(dev, &devnode);
- if (r < 0)
- return log_device_debug_errno(dev, r, "Failed to get devname: %m");
-
- node_fd = sd_device_open(dev, O_PATH|O_CLOEXEC);
- if (node_fd < 0) {
- if (ERRNO_IS_DEVICE_ABSENT(node_fd)) {
- log_device_debug_errno(dev, node_fd, "Device node %s is missing, skipping handling.", devnode);
- return 0; /* This is necessarily racey, so ignore missing the device */
- }
-
- return log_device_debug_errno(dev, node_fd, "Cannot open node %s: %m", devnode);
- }
+ assert(node_fd >= 0);
+ assert(devnode);
if (fstat(node_fd, &stats) < 0)
return log_device_debug_errno(dev, errno, "cannot stat() node %s: %m", devnode);
@@ -696,3 +683,34 @@ int udev_node_apply_permissions(
return 0;
}
+
+int udev_node_apply_permissions(
+ sd_device *dev,
+ bool apply_mac,
+ mode_t mode,
+ uid_t uid,
+ gid_t gid,
+ OrderedHashmap *seclabel_list) {
+
+ const char *devnode;
+ _cleanup_close_ int node_fd = -1;
+ int r;
+
+ assert(dev);
+
+ r = sd_device_get_devname(dev, &devnode);
+ if (r < 0)
+ return log_device_debug_errno(dev, r, "Failed to get devname: %m");
+
+ node_fd = sd_device_open(dev, O_PATH|O_CLOEXEC);
+ if (node_fd < 0) {
+ if (ERRNO_IS_DEVICE_ABSENT(node_fd)) {
+ log_device_debug_errno(dev, node_fd, "Device node %s is missing, skipping handling.", devnode);
+ return 0; /* This is necessarily racey, so ignore missing the device */
+ }
+
+ return log_device_debug_errno(dev, node_fd, "Cannot open node %s: %m", devnode);
+ }
+
+ return udev_node_apply_permissions_impl(dev, node_fd, devnode, apply_mac, mode, uid, gid, seclabel_list);
+}