@@ -2771,7 +2771,7 @@ static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr,
error_report("Unable to reserve 0x%lx bytes of virtual address "
"space at %p (%s) for use as guest address space (check your "
"virtual memory ulimit setting, min_mmap_addr or reserve less "
- "using -R option)", reserved_va, test, strerror(errno));
+ "using -R option)", reserved_va, test, qemu_strerror(errno));
exit(EXIT_FAILURE);
}
@@ -3564,7 +3564,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info)
g_free(scratch);
if (!bprm->p) {
- fprintf(stderr, "%s: %s\n", bprm->filename, strerror(E2BIG));
+ fprintf(stderr, "%s: %s\n", bprm->filename, qemu_strerror(E2BIG));
exit(-1);
}
@@ -744,7 +744,7 @@ int main(int argc, char **argv, char **envp)
if (execfd == 0) {
execfd = open(exec_path, O_RDONLY);
if (execfd < 0) {
- printf("Error while loading %s: %s\n", exec_path, strerror(errno));
+ printf("Error while loading %s: %s\n", exec_path, qemu_strerror(errno));
_exit(EXIT_FAILURE);
}
}
@@ -887,7 +887,7 @@ int main(int argc, char **argv, char **envp)
ret = loader_exec(execfd, exec_path, target_argv, target_environ, regs,
info, &bprm);
if (ret != 0) {
- printf("Error while loading %s: %s\n", exec_path, strerror(-ret));
+ printf("Error while loading %s: %s\n", exec_path, qemu_strerror(-ret));
_exit(EXIT_FAILURE);
}
@@ -580,7 +580,7 @@ const char *target_strerror(int err)
return "Successful exit from sigreturn";
}
- return strerror(target_to_host_errno(err));
+ return qemu_strerror(target_to_host_errno(err));
}
static int check_zeroed_user(abi_long addr, size_t ksize, size_t usize)
strerror() is not guaranteed to be thread-safe as described in (https://gitlab.com/qemu-project/qemu/-/issues/416). This commit changes files under /linux-user that call strerror() to call the safer qemu_strerror(). Signed-off-by: Yohei Kojima <y-koj@outlook.jp> --- linux-user/elfload.c | 4 ++-- linux-user/main.c | 4 ++-- linux-user/syscall.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)