fs/stat.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fs/stat.c b/fs/stat.c index f19b124974f2..e187dc79a313 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -311,6 +311,15 @@ int vfs_fstatat(int dfd, const char __user *filename, int statx_flags = flags | AT_NO_AUTOMOUNT; struct filename *name; + /* Work around glibc being silly */ + if (dfd >= 0 && flags == AT_EMPTY_PATH) { + char c; + if (!get_user(c, filename)) { + if (!c) + return vfs_fstat(dfd, stat); + } + } + name = getname_flags(filename, getname_statx_lookup_flags(statx_flags), NULL); ret = vfs_statx(dfd, name, statx_flags, stat, STATX_BASIC_STATS); putname(name);