From patchwork Sat Nov 9 12:08:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Michael Tokarev X-Patchwork-Id: 842098 Delivered-To: patch@linaro.org Received: by 2002:a5d:6307:0:b0:381:e71e:8f7b with SMTP id i7csp2118903wru; Sat, 9 Nov 2024 04:24:18 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUuvmmnA0Uj4CCnEv8botiog75zqTElfTFPY0/Tr97KryhbnBj16uMRtpRKHKhJLapFVz5Agg==@linaro.org X-Google-Smtp-Source: AGHT+IF7A+CecNPcF5t9RkXQljVudOguF1Y6NfpMgQla1Ju2WhEDLnmkWNf9BLaVsDJXE6xP2545 X-Received: by 2002:a05:620a:1a93:b0:7b1:481f:b89c with SMTP id af79cd13be357-7b331ebfd07mr682330085a.35.1731155058700; Sat, 09 Nov 2024 04:24:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1731155058; cv=none; d=google.com; s=arc-20240605; b=Et0olNx5rJYYku8wfSp+V14qzjqmqoli9FV06MovbeGxyimdvcGsBLD1dvNJcaJSEG 9aHywsmG9OhNQ5T0xfSI1zXwqQ0hvhlI5Smy5hKq+QgcFJFXsCyjQYWyfZ0zNKeppbZQ b78dSLSnciwJouLDeIK/+yPvhpD4wgLfRDWNZ0hqbF9TU/4yW3+G7LuI2r77yuVZxMSf jKu+9YfCd1Vt3zR3JwbeltwIMH+33e/NQEph6AQ56t/HXl7XlqZ3r+F9Scjrd+S77RV7 o03qd0jsUxrFy6HGlgWeFzLnN+4e7qH8gtwdZzvrqNkucd1GJV+Q5WWb6L67VuHTIM0k uZMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=q3LEknbivOox5mRQ38fZ/NaUmAVKaaDD+5ZKW+gZ01Y=; fh=2zYmPS5+8I9faIpgPHByls7BY9F364PthA4FrZU1Hko=; b=XfsJc0eVDhMk28iFvZtKwM8J1KdH1gP0t8WNMjd2cUptM0B8J9TiKO5Bo3WMKfZmjj tMng7UL0ENEg4wQi4E/FC4oUxyHgVCROwPvb9aixLaur4GgiNOFq43K0iUqbF4AISiPp X/vyqP+1Sp+zLWVuJoLJnE/p8UXtxWMfMrsYXtRx0osvulwx7xSiVt+qWmy+Pefy+iVR Zgqd/smupucdpmQI8r60Qqvm/k0Qm+2RIXICwJfgTpEcLJS7jyS6BoFpOQA0U8vLzLzL ev/uIvq6JAMitWiPmbdOQEwFtne87quS9e8Z1Yfn30RVxqgg28QNfJHU0OTCUrahp61U c9CQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7b32ac3de22si643637885a.3.2024.11.09.04.24.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sat, 09 Nov 2024 04:24:18 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t9kPk-0006c3-88; Sat, 09 Nov 2024 07:18:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t9kOe-0005ER-Cz; Sat, 09 Nov 2024 07:16:58 -0500 Received: from isrv.corpit.ru ([86.62.121.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t9kOc-0005CP-0W; Sat, 09 Nov 2024 07:16:55 -0500 Received: from tsrv.corpit.ru (tsrv.tls.msk.ru [192.168.177.2]) by isrv.corpit.ru (Postfix) with ESMTP id D0598A163C; Sat, 9 Nov 2024 15:08:07 +0300 (MSK) Received: from tls.msk.ru (mjt.wg.tls.msk.ru [192.168.177.130]) by tsrv.corpit.ru (Postfix) with SMTP id 95B8D167FC3; Sat, 9 Nov 2024 15:09:02 +0300 (MSK) Received: (nullmailer pid 3296185 invoked by uid 1000); Sat, 09 Nov 2024 12:09:01 -0000 From: Michael Tokarev To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Pierrick Bouvier , Richard Henderson , Robbin Ehn , =?utf-8?q?Alex_Benn=C3=A9e?= , Michael Tokarev Subject: [Stable-9.1.2 19/58] plugins: fix qemu_plugin_reset Date: Sat, 9 Nov 2024 15:08:20 +0300 Message-Id: <20241109120901.3295995-19-mjt@tls.msk.ru> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=86.62.121.231; envelope-from=mjt@tls.msk.ru; helo=isrv.corpit.ru X-Spam_score_int: -68 X-Spam_score: -6.9 X-Spam_bar: ------ X-Spam_report: (-6.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Pierrick Bouvier 34e5e1 refactored the plugin context initialization. After this change, tcg_ctx->plugin_insn is not reset inconditionnally anymore, but only if one plugin at least is active. When uninstalling the last plugin active, we stopped reinitializing tcg_ctx->plugin_insn, which leads to memory callbacks being emitted. This results in an error as they don't appear in a plugin op sequence as expected. The correct fix is to make sure we reset plugin translation variables after current block translation ends. This way, we can catch any potential misuse of those after a given block, in more than fixing the current bug. Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2570 Reviewed-by: Richard Henderson Signed-off-by: Pierrick Bouvier Tested-by: Robbin Ehn Message-Id: <20241015003819.984601-1-pierrick.bouvier@linaro.org> [AJB: trim patch version details from commit msg] Signed-off-by: Alex Bennée Message-Id: <20241023113406.1284676-19-alex.bennee@linaro.org> (cherry picked from commit b56f7dd203c301231d3bb2d071b4e32b345f49d6) Signed-off-by: Michael Tokarev diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index ec89a085b4..99643dd960 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -468,4 +468,8 @@ void plugin_gen_tb_end(CPUState *cpu, size_t num_insns) /* inject the instrumentation at the appropriate places */ plugin_gen_inject(ptb); + + /* reset plugin translation state (plugin_tb is reused between blocks) */ + tcg_ctx->plugin_db = NULL; + tcg_ctx->plugin_insn = NULL; }