X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev%2Fudev-node.c;h=c80a74c2188128eb20478f4d137b0b89855975da;hp=8c2154d37e4b6d35d0c00eac6764d8d363691ab2;hb=b73bf332c2da4f539d029d5e9a09af76df12181f;hpb=6834a4429997480b3959c04ac9a74de7f29b3056 diff --git a/udev/udev-node.c b/udev/udev-node.c index 8c2154d37..c80a74c21 100644 --- a/udev/udev-node.c +++ b/udev/udev-node.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -55,6 +56,8 @@ int udev_node_mknod(struct udev_device *dev, const char *file, dev_t devnum, mod info(udev, "preserve file '%s', because it has correct dev_t\n", file); preserve = 1; udev_selinux_lsetfilecon(udev, file, mode); + /* update time stamp when we re-use the node, like on media change events */ + utimes(file, NULL); } else { char file_tmp[UTIL_PATH_SIZE + sizeof(TMP_FILE_EXT)]; @@ -175,6 +178,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink) info(udev, "preserve already existing symlink '%s' to '%s'\n", slink, target); udev_selinux_lsetfilecon(udev, slink, S_IFLNK); + lutimes(slink, NULL); goto exit; } } @@ -281,6 +285,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons udev_device_unref(dev_db); } } + closedir(dir); return target; }