mirror of
https://github.com/systemd/systemd.git
synced 2024-12-26 03:22:00 +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;
|
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)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
assert(path_fd >= 0);
|
assert(path_fd >= 0);
|
||||||
|
|
||||||
d = opendir(FORMAT_PROC_FD_PATH(path_fd));
|
d = opendir(FORMAT_PROC_FD_PATH(path_fd));
|
||||||
if (!d)
|
if (!d) {
|
||||||
return -errno;
|
/* 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)
|
if (ret_path)
|
||||||
*ret_path = TAKE_PTR(p);
|
*ret_path = TAKE_PTR(p);
|
||||||
|
Loading…
Reference in New Issue
Block a user