[Qemu-devel] [PATCH 0/4] linux-user: fix various SIGSEGV delivery bugs

Peter Maydell posted 4 patches 6 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1509993206-26637-1-git-send-email-peter.maydell@linaro.org
Test checkpatch passed
Test docker passed
Test ppc passed
Test s390x passed
linux-user/main.c         |  8 ++++++--
linux-user/syscall.c      | 27 +++++++++++++++++++++++----
target/sparc/mmu_helper.c |  8 ++++++++
3 files changed, 37 insertions(+), 6 deletions(-)
[Qemu-devel] [PATCH 0/4] linux-user: fix various SIGSEGV delivery bugs
Posted by Peter Maydell 6 years, 5 months ago
This patchset fixes most of the problems with delivering SIGSEGV
noted in https://bugs.launchpad.net/qemu/+bug/1705118:
 * s390x is missing masking operations on the fault address
   passed to the guest in si_addr
 * ppc is passing the PC of the offending insn, not the data
   address, into si_addr
 * sparc fails to record the address of a data fault and so
   passes 0 into si_addr
 * sparc isn't implementing rt_sigaction correctly (it has an
   extra 'restorer' argument, similar to alpha)

It doesn't actually get the sparc testcase from that bug working,
though, because SPARC is entirely missing support for setup_rt_frame()
and do_rt_sigreturn(), so it can't deliver RT signals.

Implementing RT signal delivery is too big a bugfix for an afternoon,
so here are the simpler parts. I'll leave the signal delivery part
to somebody who cares about SPARC guests...

thanks
-- PMM

Peter Maydell (4):
  linux-user/s390x: Mask si_addr for SIGSEGV
  linux-user/ppc: Report correct fault address for data faults
  linux-user/sparc: Put address for data faults where linux-user expects
    it
  linux-user: Handle rt_sigaction correctly for SPARC

 linux-user/main.c         |  8 ++++++--
 linux-user/syscall.c      | 27 +++++++++++++++++++++++----
 target/sparc/mmu_helper.c |  8 ++++++++
 3 files changed, 37 insertions(+), 6 deletions(-)

-- 
2.7.4


Re: [Qemu-devel] [PATCH 0/4] linux-user: fix various SIGSEGV delivery bugs
Posted by Riku Voipio 6 years, 5 months ago
On Mon, Nov 06, 2017 at 06:33:22PM +0000, Peter Maydell wrote:
> This patchset fixes most of the problems with delivering SIGSEGV
> noted in https://bugs.launchpad.net/qemu/+bug/1705118:
>  * s390x is missing masking operations on the fault address
>    passed to the guest in si_addr
>  * ppc is passing the PC of the offending insn, not the data
>    address, into si_addr
>  * sparc fails to record the address of a data fault and so
>    passes 0 into si_addr
>  * sparc isn't implementing rt_sigaction correctly (it has an
>    extra 'restorer' argument, similar to alpha)
> 
> It doesn't actually get the sparc testcase from that bug working,
> though, because SPARC is entirely missing support for setup_rt_frame()
> and do_rt_sigreturn(), so it can't deliver RT signals.
> 
> Implementing RT signal delivery is too big a bugfix for an afternoon,
> so here are the simpler parts. I'll leave the signal delivery part
> to somebody who cares about SPARC guests...
> 
> thanks
> -- PMM

Thanks!

series applied to linux-user tree,

Riku

 
> Peter Maydell (4):
>   linux-user/s390x: Mask si_addr for SIGSEGV
>   linux-user/ppc: Report correct fault address for data faults
>   linux-user/sparc: Put address for data faults where linux-user expects
>     it
>   linux-user: Handle rt_sigaction correctly for SPARC
> 
>  linux-user/main.c         |  8 ++++++--
>  linux-user/syscall.c      | 27 +++++++++++++++++++++++----
>  target/sparc/mmu_helper.c |  8 ++++++++
>  3 files changed, 37 insertions(+), 6 deletions(-)
> 
> -- 
> 2.7.4
>