mbox series

[v4,0/4] accel/tcg: Make sure that tb->size != 0 after translation

Message ID 20210415130305.28640-1-iii@linux.ibm.com (mailing list archive)
Headers show
Series accel/tcg: Make sure that tb->size != 0 after translation | expand

Message

Ilya Leoshkevich April 15, 2021, 1:03 p.m. UTC
If arch-specific code generates a translation block of size 0,
tb_gen_code() may generate a spurious exception.

Fix s390x (patch 1), ARM (patch 2) and xtensa (patch 3) and add an
assertion in order to catch such situations earlier (patch 4).

v1: https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02037.html
v1 -> v2: Fix target/s390x instead of trying to tolerate tb->size == 0
          in tb_gen_code().

v2: https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02101.html
v2 -> v3: Split the common code change into a separate patch, add the
          ARM patch in order to fix
          https://gitlab.com/cohuck/qemu/-/jobs/1178409450

v3: https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02332.html
v3 -> v4: Add the xtensa patch in order to fix
          https://gitlab.com/cohuck/qemu/-/jobs/1178409540

Ilya Leoshkevich (4):
  target/s390x: Fix translation exception on illegal instruction
  target/arm: Make sure that commpage's tb->size != 0
  target/xtensa: Make sure that tb->size != 0
  accel/tcg: Assert that tb->size != 0 after translation

 accel/tcg/translate-all.c |  1 +
 target/arm/translate.c    |  1 +
 target/s390x/translate.c  | 16 +++++++++++-----
 target/xtensa/translate.c |  3 +++
 4 files changed, 16 insertions(+), 5 deletions(-)

Comments

Cornelia Huck April 15, 2021, 3:39 p.m. UTC | #1
On Thu, 15 Apr 2021 15:03:01 +0200
Ilya Leoshkevich <iii@linux.ibm.com> wrote:

> If arch-specific code generates a translation block of size 0,
> tb_gen_code() may generate a spurious exception.
> 
> Fix s390x (patch 1), ARM (patch 2) and xtensa (patch 3) and add an
> assertion in order to catch such situations earlier (patch 4).
> 
> v1: https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02037.html
> v1 -> v2: Fix target/s390x instead of trying to tolerate tb->size == 0
>           in tb_gen_code().
> 
> v2: https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02101.html
> v2 -> v3: Split the common code change into a separate patch, add the
>           ARM patch in order to fix
>           https://gitlab.com/cohuck/qemu/-/jobs/1178409450
> 
> v3: https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02332.html
> v3 -> v4: Add the xtensa patch in order to fix
>           https://gitlab.com/cohuck/qemu/-/jobs/1178409540
> 
> Ilya Leoshkevich (4):
>   target/s390x: Fix translation exception on illegal instruction
>   target/arm: Make sure that commpage's tb->size != 0
>   target/xtensa: Make sure that tb->size != 0
>   accel/tcg: Assert that tb->size != 0 after translation
> 
>  accel/tcg/translate-all.c |  1 +
>  target/arm/translate.c    |  1 +
>  target/s390x/translate.c  | 16 +++++++++++-----
>  target/xtensa/translate.c |  3 +++
>  4 files changed, 16 insertions(+), 5 deletions(-)
> 

FWIW, this now has passed CI for me.

If all is good, who will merge it? I can merge through the s390x tree,
if I get acks on the patches for the other architectures, or I can give
my ack on the s390x patch, if somebody else is going to take it.
Ilya Leoshkevich April 16, 2021, 11:53 a.m. UTC | #2
On Thu, 2021-04-15 at 17:39 +0200, Cornelia Huck wrote:
> On Thu, 15 Apr 2021 15:03:01 +0200
> Ilya Leoshkevich <iii@linux.ibm.com> wrote:
> 
> > If arch-specific code generates a translation block of size 0,
> > tb_gen_code() may generate a spurious exception.
> > 
> > Fix s390x (patch 1), ARM (patch 2) and xtensa (patch 3) and add an
> > assertion in order to catch such situations earlier (patch 4).
> > 
> > v1: 
> > https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02037.html
> > v1 -> v2: Fix target/s390x instead of trying to tolerate tb->size
> > == 0
> >           in tb_gen_code().
> > 
> > v2: 
> > https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02101.html
> > v2 -> v3: Split the common code change into a separate patch, add
> > the
> >           ARM patch in order to fix
> >           https://gitlab.com/cohuck/qemu/-/jobs/1178409450
> > 
> > v3: 
> > https://lists.nongnu.org/archive/html/qemu-devel/2021-04/msg02332.html
> > v3 -> v4: Add the xtensa patch in order to fix
> >           https://gitlab.com/cohuck/qemu/-/jobs/1178409540
> > 
> > Ilya Leoshkevich (4):
> >   target/s390x: Fix translation exception on illegal instruction
> >   target/arm: Make sure that commpage's tb->size != 0
> >   target/xtensa: Make sure that tb->size != 0
> >   accel/tcg: Assert that tb->size != 0 after translation
> > 
> >  accel/tcg/translate-all.c |  1 +
> >  target/arm/translate.c    |  1 +
> >  target/s390x/translate.c  | 16 +++++++++++-----
> >  target/xtensa/translate.c |  3 +++
> >  4 files changed, 16 insertions(+), 5 deletions(-)
> > 
> 
> FWIW, this now has passed CI for me.
> 
> If all is good, who will merge it? I can merge through the s390x
> tree,
> if I get acks on the patches for the other architectures, or I can
> give
> my ack on the s390x patch, if somebody else is going to take it.

For me personally it would be totally fine if it goes through your
tree. We still need a review on the ARM patch though.