[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] linux-user: don't short-circuit read with zero leng
From: |
Andreas Schwab |
Subject: |
[Qemu-devel] [PATCH] linux-user: don't short-circuit read with zero length |
Date: |
Tue, 05 Mar 2019 17:45:05 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1.92 (gnu/linux) |
A zero-length read still needs to do the usual checks, thus it may return
errors like EBADF. This makes the read syscall emulation consistent with
the pread64 syscall emulation.
Signed-off-by: Andreas Schwab <address@hidden>
---
linux-user/syscall.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ff912e89e1..7fac8e318f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7047,8 +7047,8 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
_exit(arg1);
return 0; /* avoid warning */
case TARGET_NR_read:
- if (arg3 == 0) {
- return 0;
+ if (arg2 == 0 && arg3 == 0) {
+ return get_errno(safe_read(arg1, 0, 0));
} else {
if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
return -TARGET_EFAULT;
--
2.21.0
--
Andreas Schwab, SUSE Labs, address@hidden
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
- [Qemu-devel] [PATCH] linux-user: don't short-circuit read with zero length,
Andreas Schwab <=