All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org
Cc: Stefan Hajnoczi <stefanha@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	qemu-stable@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	David Hildenbrand <david@redhat.com>
Subject: [PULL 06/11] target/s390x: Fix CLC corrupting cc_src
Date: Tue,  7 Nov 2023 19:32:23 +0100	[thread overview]
Message-ID: <20231107183228.276424-7-thuth@redhat.com> (raw)
In-Reply-To: <20231107183228.276424-1-thuth@redhat.com>

From: Ilya Leoshkevich <iii@linux.ibm.com>

CLC updates cc_src before accessing the second operand; if the latter
is inaccessible, the former ends up containing a bogus value.

Fix by reading cc_src into a temporary first.

Fixes: 4f7403d52b1c ("target-s390: Convert CLC")
Closes: https://gitlab.com/qemu-project/qemu/-/issues/1865
Cc: qemu-stable@nongnu.org
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Message-ID: <20231106093605.1349201-2-iii@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/translate.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
index 4bae1509f5..a0d6a2a35d 100644
--- a/target/s390x/tcg/translate.c
+++ b/target/s390x/tcg/translate.c
@@ -2007,6 +2007,7 @@ static DisasJumpType op_cksm(DisasContext *s, DisasOps *o)
 static DisasJumpType op_clc(DisasContext *s, DisasOps *o)
 {
     int l = get_field(s, l1);
+    TCGv_i64 src;
     TCGv_i32 vl;
     MemOp mop;
 
@@ -2016,9 +2017,11 @@ static DisasJumpType op_clc(DisasContext *s, DisasOps *o)
     case 4:
     case 8:
         mop = ctz32(l + 1) | MO_TE;
-        tcg_gen_qemu_ld_tl(cc_src, o->addr1, get_mem_index(s), mop);
+        /* Do not update cc_src yet: loading cc_dst may cause an exception. */
+        src = tcg_temp_new_i64();
+        tcg_gen_qemu_ld_tl(src, o->addr1, get_mem_index(s), mop);
         tcg_gen_qemu_ld_tl(cc_dst, o->in2, get_mem_index(s), mop);
-        gen_op_update2_cc_i64(s, CC_OP_LTUGTU_64, cc_src, cc_dst);
+        gen_op_update2_cc_i64(s, CC_OP_LTUGTU_64, src, cc_dst);
         return DISAS_NEXT;
     default:
         vl = tcg_constant_i32(l);
-- 
2.41.0



  parent reply	other threads:[~2023-11-07 18:34 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-07 18:32 [PULL 00/11] s390x and MAINTAINERS updates Thomas Huth
2023-11-07 18:32 ` [PULL 01/11] MAINTAINERS: Add the virtio-gpu documentation to the corresponding section Thomas Huth
2023-11-07 18:32 ` [PULL 02/11] MAINTAINERS: Add artist.c to the hppa machine section Thomas Huth
2023-11-07 18:32 ` [PULL 03/11] tests/avocado: Allow newer versions of tesseract in the nextcube test Thomas Huth
2023-11-07 18:32 ` [PULL 04/11] s390/sclp: fix SCLP facility map Thomas Huth
2023-11-07 18:32 ` [PULL 05/11] target/s390x/cpu_models: Use 'first_cpu' in s390_get_feat_block() Thomas Huth
2023-11-07 18:32 ` Thomas Huth [this message]
2023-11-07 18:32 ` [PULL 07/11] tests/tcg/s390x: Test CLC with inaccessible second operand Thomas Huth
2023-11-07 18:32 ` [PULL 08/11] target/s390x: Fix LAALG not updating cc_src Thomas Huth
2023-11-07 18:32 ` [PULL 09/11] tests/tcg/s390x: Test LAALG with negative cc_src Thomas Huth
2023-11-07 18:32 ` [PULL 10/11] tests/tcg/s390x: Test ADD LOGICAL WITH CARRY Thomas Huth
2023-11-07 18:32 ` [PULL 11/11] target/s390x/cpu topology: Fix ordering and creation of TLEs Thomas Huth
2023-11-08 14:19 ` [PULL 00/11] s390x and MAINTAINERS updates Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231107183228.276424-7-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=david@redhat.com \
    --cc=iii@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.