diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-02-20 14:43:58 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-02-20 19:40:31 +0900 |
commit | 135e5a201a3eb411a6767c1c16e704eaa0431d33 (patch) | |
tree | 00fbc662e38d29c2bca5c70abb70466bead6baa6 /src/udev/udev-node.c | |
parent | 0ba75bde5f008dd5eb818549c76e1fa4499b7f36 (diff) | |
download | systemd-135e5a201a3eb411a6767c1c16e704eaa0431d33.tar.gz |
udev-node: make stack_directory_read_one() accept NULL for devnode
No functional change, as currently the function is always called with
non-NULL argument. Just a preparation for #26048 or #25839.
Diffstat (limited to 'src/udev/udev-node.c')
-rw-r--r-- | src/udev/udev-node.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 5f3dc61f09..e49e959cd8 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -110,12 +110,14 @@ static int stack_directory_read_one(int dirfd, const char *id, char **devnode, i assert(dirfd >= 0); assert(id); - assert(devnode); assert(priority); + /* This reads priority and device node from the symlink under /run/udev/links (or udev database). + * If 'devnode' is NULL, obtained priority is always set to '*priority'. If 'devnode' is non-NULL, + * this updates '*devnode' and '*priority'. */ + /* First, let's try to read the entry with the new format, which should replace the old format pretty * quickly. */ - r = readlinkat_malloc(dirfd, id, &buf); if (r >= 0) { char *colon; @@ -139,6 +141,9 @@ static int stack_directory_read_one(int dirfd, const char *id, char **devnode, i if (r < 0) return r; + if (!devnode) + goto finalize; + if (*devnode && tmp_prio <= *priority) return 0; /* Unchanged */ @@ -160,6 +165,9 @@ static int stack_directory_read_one(int dirfd, const char *id, char **devnode, i if (r < 0) return r; + if (!devnode) + goto finalize; + if (*devnode && tmp_prio <= *priority) return 0; /* Unchanged */ @@ -174,6 +182,7 @@ static int stack_directory_read_one(int dirfd, const char *id, char **devnode, i } else return r == -ENOENT ? -ENODEV : r; +finalize: *priority = tmp_prio; return 1; /* Updated */ } |