udev-node: assume no new claim to a symlink if /run/udev/links is not updated
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 1 Sep 2021 21:58:59 +0000 (06:58 +0900)
committerMichael Biebl <biebl@debian.org>
Fri, 19 Nov 2021 20:11:45 +0000 (20:11 +0000)
During creating a symlink to a device node, if another device node which
requests the same symlink is added/removed, `stat_inode_unmodified()`
should always detects that. We do not need to continue the loop
unconditionally.

(cherry picked from commit 8f27311eb2aec2411d1fb7d62e6c9d75d21ae8df)

Gbp-Pq: Name udev-node-assume-no-new-claim-to-a-symlink-if-run-udev-li.patch

src/udev/udev-node.c

index 0de848da194f95aa5441217ca157fdc8b43d2f10..1a34ea81283247bb6e4e04e35309f276b6f24744 100644 (file)
@@ -491,11 +491,6 @@ static int link_update(sd_device *dev, const char *slink_in, bool add) {
                 r = node_symlink(dev, target, slink);
                 if (r < 0)
                         return r;
-                if (r == 1)
-                        /* We have replaced already existing symlink, possibly there is some other device trying
-                         * to claim the same symlink. Let's do one more iteration to give us a chance to fix
-                         * the error if other device actually claims the symlink with higher priority. */
-                        continue;
 
                 /* Skip the second stat() if the first failed, stat_inode_unmodified() would return false regardless. */
                 if ((st1.st_mode & S_IFMT) != 0) {