mbox series

[v3,0/3] Fix BRASL and BRCL with large negative offsets

Message ID 20220314104232.675863-1-iii@linux.ibm.com
Headers show
Series Fix BRASL and BRCL with large negative offsets | expand

Message

Ilya Leoshkevich March 14, 2022, 10:42 a.m. UTC
Hi,

I noticed that sometimes jumping backwards leads to crashes or hangs.
The problem is a missing cast.
Patches 1 and 2 fix the problem, patch 3 adds a test.


v1: https://lists.nongnu.org/archive/html/qemu-devel/2022-03/msg03356.html
v1 -> v2:
- Skip the test if mmap() fails (Richard).
- Replace test opcodes with inline asm (David). Since we now want to
  skip the test if the code cannot be mapped (e.g. on a 31-bit host),
  we shouldn't be asking the loader to map the code right away. So
  the mmap() approach stays.

v2: https://lists.nongnu.org/archive/html/qemu-devel/2022-03/msg03387.html
v2 -> v3:
- Use MAP_NORESERVE (Christian / David).
- Unhardcode 0x100000006 (Richard).

Best regards,
Ilya

Ilya Leoshkevich (3):
  s390x/tcg: Fix BRASL with a large negative offset
  s390x/tcg: Fix BRCL with a large negative offset
  tests/tcg/s390x: Test BRASL and BRCL with large negative offsets

 target/s390x/tcg/translate.c           |  4 +-
 tests/tcg/s390x/Makefile.target        |  1 +
 tests/tcg/s390x/branch-relative-long.c | 68 ++++++++++++++++++++++++++
 3 files changed, 71 insertions(+), 2 deletions(-)
 create mode 100644 tests/tcg/s390x/branch-relative-long.c

Comments

Thomas Huth March 14, 2022, 12:35 p.m. UTC | #1
On 14/03/2022 11.42, Ilya Leoshkevich wrote:
> Hi,
> 
> I noticed that sometimes jumping backwards leads to crashes or hangs.
> The problem is a missing cast.
> Patches 1 and 2 fix the problem, patch 3 adds a test.
> 
> 
> v1: https://lists.nongnu.org/archive/html/qemu-devel/2022-03/msg03356.html
> v1 -> v2:
> - Skip the test if mmap() fails (Richard).
> - Replace test opcodes with inline asm (David). Since we now want to
>    skip the test if the code cannot be mapped (e.g. on a 31-bit host),
>    we shouldn't be asking the loader to map the code right away. So
>    the mmap() approach stays.
> 
> v2: https://lists.nongnu.org/archive/html/qemu-devel/2022-03/msg03387.html
> v2 -> v3:
> - Use MAP_NORESERVE (Christian / David).
> - Unhardcode 0x100000006 (Richard).
> 
> Best regards,
> Ilya
> 
> Ilya Leoshkevich (3):
>    s390x/tcg: Fix BRASL with a large negative offset
>    s390x/tcg: Fix BRCL with a large negative offset
>    tests/tcg/s390x: Test BRASL and BRCL with large negative offsets
> 
>   target/s390x/tcg/translate.c           |  4 +-
>   tests/tcg/s390x/Makefile.target        |  1 +
>   tests/tcg/s390x/branch-relative-long.c | 68 ++++++++++++++++++++++++++
>   3 files changed, 71 insertions(+), 2 deletions(-)
>   create mode 100644 tests/tcg/s390x/branch-relative-long.c

Thanks, queued to my s390x-next branch now:

https://gitlab.com/thuth/qemu/-/commits/s390x-next/

  Thomas