linux-user: Fix error handling in flatload.c target_pread()
The flatload.c target_pread() function is supposed to return 0 on success or negative host errnos; however it wasn't checking lock_user() for failure or returning the errno from the pread() call. Fix these problems (the first of which is noted by Coverity). Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
f9757b1d96
commit
e5a869ed56
@ -95,7 +95,13 @@ static int target_pread(int fd, abi_ulong ptr, abi_ulong len,
|
||||
int ret;
|
||||
|
||||
buf = lock_user(VERIFY_WRITE, ptr, len, 0);
|
||||
if (!buf) {
|
||||
return -EFAULT;
|
||||
}
|
||||
ret = pread(fd, buf, len, offset);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
}
|
||||
unlock_user(buf, ptr, len);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user