mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +03:00
basic: add fallback in chase_symlinks_and_opendir() for cases when /proc is not mounted
https://bugzilla.redhat.com/show_bug.cgi?id=2136916
This commit is contained in:
parent
6accdcc547
commit
3e22dfc235
@ -552,14 +552,22 @@ int chase_symlinks_and_opendir(
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = chase_symlinks(path, root, chase_flags, ret_path ? &p : NULL, &path_fd);
|
||||
r = chase_symlinks(path, root, chase_flags, &p, &path_fd);
|
||||
if (r < 0)
|
||||
return r;
|
||||
assert(path_fd >= 0);
|
||||
|
||||
d = opendir(FORMAT_PROC_FD_PATH(path_fd));
|
||||
if (!d)
|
||||
return -errno;
|
||||
if (!d) {
|
||||
/* Hmm, we have the fd already but we got ENOENT, most likely /proc is not mounted.
|
||||
* Let's try opendir() again on the full path. */
|
||||
if (errno == ENOENT) {
|
||||
d = opendir(p);
|
||||
if (!d)
|
||||
return -errno;
|
||||
} else
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (ret_path)
|
||||
*ret_path = TAKE_PTR(p);
|
||||
|
Loading…
Reference in New Issue
Block a user