Merge pull request #33496 from YHNdnzj/fd-is-mount-symlink

mountpoint-util: do not assume symlinks are not mountpoints
This commit is contained in:
Luca Boccassi
2024-07-02 10:07:20 +02:00
committed by GitHub
2 changed files with 30 additions and 4 deletions
-4
View File
@@ -273,8 +273,6 @@ int fd_is_mount_point(int fd, const char *filename, int flags) {
/* If statx() is not available or forbidden, fall back to name_to_handle_at() below */
} else if (FLAGS_SET(sx.stx_attributes_mask, STATX_ATTR_MOUNT_ROOT)) /* yay! */
return FLAGS_SET(sx.stx_attributes, STATX_ATTR_MOUNT_ROOT);
else if (FLAGS_SET(sx.stx_mask, STATX_TYPE) && S_ISLNK(sx.stx_mode))
return false; /* symlinks are never mount points */
r = name_to_handle_at_try_fid(fd, filename, &h, &mount_id, flags);
if (r < 0) {
@@ -350,8 +348,6 @@ fallback_fstat:
flags |= AT_SYMLINK_NOFOLLOW;
if (fstatat(fd, filename, &a, flags) < 0)
return -errno;
if (S_ISLNK(a.st_mode)) /* Symlinks are never mount points */
return false;
if (isempty(filename))
r = fstatat(fd, "..", &b, 0);