Message ID | 20211121151711.331653-1-laurent@vivier.eu |
---|---|
State | New |
Headers | show |
Series | linux-user: fix Coverity CID 1464101 | expand |
On 11/21/21 4:17 PM, Laurent Vivier wrote: > target_mmap() can fail and return -1, but we don't check for that and > instead assume it's always valid. > > Fixes: db2af69d6ba8 ("linux-user: Add infrastructure for a signal trampoline page") > Cc: richard.henderson@linaro.org > Reported-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Laurent Vivier <laurent@vivier.eu> > --- > linux-user/elfload.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 5da8c02d0822..767f54c76dc5 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -3254,9 +3254,13 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) > * Otherwise, allocate a private page to hold them. > */ > if (TARGET_ARCH_HAS_SIGTRAMP_PAGE) { > - abi_ulong tramp_page = target_mmap(0, TARGET_PAGE_SIZE, > - PROT_READ | PROT_WRITE, > - MAP_PRIVATE | MAP_ANON, -1, 0); > + abi_long tramp_page = target_mmap(0, TARGET_PAGE_SIZE, > + PROT_READ | PROT_WRITE, > + MAP_PRIVATE | MAP_ANON, -1, 0); > + if (tramp_page == -1) { > + return -errno; > + } > + > setup_sigtramp(tramp_page); > target_mprotect(tramp_page, TARGET_PAGE_SIZE, PROT_READ | PROT_EXEC); > } >
Le 21/11/2021 à 16:17, Laurent Vivier a écrit : > target_mmap() can fail and return -1, but we don't check for that and > instead assume it's always valid. > > Fixes: db2af69d6ba8 ("linux-user: Add infrastructure for a signal trampoline page") > Cc: richard.henderson@linaro.org > Reported-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Laurent Vivier <laurent@vivier.eu> > --- > linux-user/elfload.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 5da8c02d0822..767f54c76dc5 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -3254,9 +3254,13 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) > * Otherwise, allocate a private page to hold them. > */ > if (TARGET_ARCH_HAS_SIGTRAMP_PAGE) { > - abi_ulong tramp_page = target_mmap(0, TARGET_PAGE_SIZE, > - PROT_READ | PROT_WRITE, > - MAP_PRIVATE | MAP_ANON, -1, 0); > + abi_long tramp_page = target_mmap(0, TARGET_PAGE_SIZE, > + PROT_READ | PROT_WRITE, > + MAP_PRIVATE | MAP_ANON, -1, 0); > + if (tramp_page == -1) { > + return -errno; > + } > + > setup_sigtramp(tramp_page); > target_mprotect(tramp_page, TARGET_PAGE_SIZE, PROT_READ | PROT_EXEC); > } > Applied to my linux-user-for-6.2 branch. Thanks, Laurent
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 5da8c02d0822..767f54c76dc5 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -3254,9 +3254,13 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) * Otherwise, allocate a private page to hold them. */ if (TARGET_ARCH_HAS_SIGTRAMP_PAGE) { - abi_ulong tramp_page = target_mmap(0, TARGET_PAGE_SIZE, - PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, -1, 0); + abi_long tramp_page = target_mmap(0, TARGET_PAGE_SIZE, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANON, -1, 0); + if (tramp_page == -1) { + return -errno; + } + setup_sigtramp(tramp_page); target_mprotect(tramp_page, TARGET_PAGE_SIZE, PROT_READ | PROT_EXEC); }
target_mmap() can fail and return -1, but we don't check for that and instead assume it's always valid. Fixes: db2af69d6ba8 ("linux-user: Add infrastructure for a signal trampoline page") Cc: richard.henderson@linaro.org Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu> --- linux-user/elfload.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)