linux-user: allow null pathname for statx()/fstatat()
Since Linux 6.11, the path argument may be NULL. Before this patch, qemu-*-linux-user failed with EFAULT when `pathname` was specified as NULL, even for Linux kernel hosts > 6.10. This patch fixes this issue by checking whether `arg2` is 0. If so, don't return EFAULT, but instead perform the appropiate syscall and let the host's kernel handle null `pathname`. Cc: qemu-stable@nongnu.org Signed-off-by: Jean-Christian CÎRSTEA <jean.christian.cirstea@gmail.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-ID: <20251229121416.2209295-1-jean.christian.cirstea@gmail.com> (cherry picked from commit 82ae60c8b5cb98d610056a1e2d0ba72e9ef7907c) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
f34c0eb054
commit
e71e02caa7
1 changed files with 7 additions and 3 deletions
|
|
@ -12141,9 +12141,13 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
|
|||
int dirfd = arg1;
|
||||
int flags = arg3;
|
||||
|
||||
p = lock_user_string(arg2);
|
||||
if (p == NULL) {
|
||||
return -TARGET_EFAULT;
|
||||
p = NULL;
|
||||
/* Since Linux 6.11, the path argument may be NULL */
|
||||
if (arg2 != 0) {
|
||||
p = lock_user_string(arg2);
|
||||
if (p == NULL) {
|
||||
return -TARGET_EFAULT;
|
||||
}
|
||||
}
|
||||
#if defined(__NR_statx)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue