]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: (utils) fix statx fallback
authorThomas Weißschuh <thomas@t-8ch.de>
Thu, 3 Aug 2023 05:13:28 +0000 (07:13 +0200)
committerThomas Weißschuh <thomas@t-8ch.de>
Thu, 3 Aug 2023 05:21:10 +0000 (07:21 +0200)
If the systemcall is not available ENOSYS is returned.

Under glibc the statx implementation also has its own fallback logic.
As AT_STATX_DONT_SYNC can't be implemented correctly in that fallback
logic the wrapper will return EINVAL in case the emulation is needed and
AT_STATX_DONT_SYNC is set.
So also use our own fallback in that case.

Fixes: #2409
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
libmount/src/utils.c

index 50553f1d5a14261f8932be0c67991acef2c340df..410ded4aa27bd2f4cca04a07bd06263c16d170bc 100644 (file)
@@ -133,7 +133,8 @@ static int safe_stat(const char *target, struct stat *st, int nofollow)
                        st->st_mode = stx.stx_mode;
                }
 
-               if (rc == 0 || errno != EOPNOTSUPP)
+               if (rc == 0 ||
+                   (errno != EOPNOTSUPP && errno != ENOSYS && errno != EINVAL))
                        return rc;
        }
 #endif