Date: Fri, 16 Apr 2021 07:56:36 GMT From: Edward Tomasz Napierala <trasz@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 4b45c2bb83a1 - main - linux: make fstatat(2) handle AT_EMPTY_PATH Message-ID: <202104160756.13G7uaEh045393@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by trasz: URL: https://cgit.FreeBSD.org/src/commit/?id=4b45c2bb83a1d7aded0c424d65595cc576760dc7 commit 4b45c2bb83a1d7aded0c424d65595cc576760dc7 Author: Edward Tomasz Napierala <trasz@FreeBSD.org> AuthorDate: 2021-04-16 07:52:59 +0000 Commit: Edward Tomasz Napierala <trasz@FreeBSD.org> CommitDate: 2021-04-16 07:56:19 +0000 linux: make fstatat(2) handle AT_EMPTY_PATH Without it, Qt5 apps from Focal fail to start, being unable to load their plugins. It's also necessary for glibc 2.33, as found in recent Arch snapshots. PR: 254112 Reviewed By: kib Sponsored by: The FreeBSD Foundation, EPSRC Differential Revision: https://reviews.freebsd.org/D28192 --- sys/compat/linux/linux_stats.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sys/compat/linux/linux_stats.c b/sys/compat/linux/linux_stats.c index 01f9cada670b..c88f6f53bdd7 100644 --- a/sys/compat/linux/linux_stats.c +++ b/sys/compat/linux/linux_stats.c @@ -632,10 +632,14 @@ linux_fstatat64(struct thread *td, struct linux_fstatat64_args *args) int error, dfd, flag; struct stat buf; - if (args->flag & ~LINUX_AT_SYMLINK_NOFOLLOW) + if (args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH)) { + linux_msg(td, "fstatat64 unsupported flag 0x%x", args->flag); return (EINVAL); + } flag = (args->flag & LINUX_AT_SYMLINK_NOFOLLOW) ? AT_SYMLINK_NOFOLLOW : 0; + flag |= (args->flag & LINUX_AT_EMPTY_PATH) ? + AT_EMPTY_PATH : 0; dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; if (!LUSECONVPATH(td)) { @@ -661,10 +665,15 @@ linux_newfstatat(struct thread *td, struct linux_newfstatat_args *args) int error, dfd, flag; struct stat buf; - if (args->flag & ~LINUX_AT_SYMLINK_NOFOLLOW) + if (args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH)) { + linux_msg(td, "fstatat unsupported flag 0x%x", args->flag); return (EINVAL); + } + flag = (args->flag & LINUX_AT_SYMLINK_NOFOLLOW) ? AT_SYMLINK_NOFOLLOW : 0; + flag |= (args->flag & LINUX_AT_EMPTY_PATH) ? + AT_EMPTY_PATH : 0; dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; if (!LUSECONVPATH(td)) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104160756.13G7uaEh045393>