X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudev-node.c;h=8ef788954d12de171badb72112695af975ad8797;hb=56dec05d29098b151421625c68525c2c3961e574;hp=d42af9a6d2a1ed825124dee5c9e31806aa4ea21d;hpb=9ec6e95b046de71c0198cb9d17acc5462dc76c74;p=elogind.git diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index d42af9a6d..8ef788954 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -179,7 +179,6 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons /* manage "stack of names" with possibly specified device priorities */ static void link_update(struct udev_device *dev, const char *slink, bool add) { - struct udev *udev = udev_device_get_udev(dev); char name_enc[UTIL_PATH_SIZE]; char filename[UTIL_PATH_SIZE * 2]; char dirname[UTIL_PATH_SIZE]; @@ -197,7 +196,7 @@ static void link_update(struct udev_device *dev, const char *slink, bool add) { if (target == NULL) { log_debug("no reference left, remove '%s'", slink); if (unlink(slink) == 0) - util_delete_path(udev, slink); + rmdir_parents(slink, "/"); } else { log_debug("creating link '%s' to '%s'", slink, target); node_symlink(dev, target, slink); @@ -282,8 +281,12 @@ static int node_permissions_apply(struct udev_device *dev, bool apply, if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) { log_debug("set permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid); - chmod(devnode, mode); - chown(devnode, uid, gid); + err = chmod(devnode, mode); + if (err < 0) + log_warning("setting mode of %s to %#o failed: %m", devnode, mode); + err = chown(devnode, uid, gid); + if (err < 0) + log_warning("setting owner of %s to uid=%u, gid=%u failed: %m", devnode, uid, gid); } else { log_debug("preserve permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid); }