From nobody Sat May 4 01:57:18 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1585588095; cv=none; d=zohomail.com; s=zohoarc; b=PJtWBifWH3UdJ8UuahthsUps20QF28/TvL5UMQYNzt2oVHhPbN6Dy3fpLAZWMl+r8KXU6Onnk8vdprSNwXVAeHLQG5EUdWICLvbkb5tWMkxBc9JY0UaC/N1bgC5RC0aCTJwpq2NMrb9NY9Wnh92V3JpkJu+VJ3J5myI1iyc9+i8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585588095; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=mfnVD714sPEUmYFC+jPaoOlpvFWNuI8yQfnoLWvtCfw=; b=XN/g9kFHgAXxLVh0dzcxphsaZ5u1CmvFENB8iyNbGBwv5ZZ/bdM8eOYC6fyTTHmjzGNUq3ViaGZV8XGl2xNbhyw5hzZYWIeDCuTtHtlieitEiIZn4TWIIvReFuMmocPO3ljrKRj2yrlWwCU2D12tsAsVu6Hlz/Bs8z43A9Ogfq0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585588095608987.0268370452765; Mon, 30 Mar 2020 10:08:15 -0700 (PDT) Received: from localhost ([::1]:53316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIxtW-0002ML-1G for importer@patchew.org; Mon, 30 Mar 2020 13:08:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56888) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIxsH-0000FF-3a for qemu-devel@nongnu.org; Mon, 30 Mar 2020 13:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jIxsF-0001mk-RM for qemu-devel@nongnu.org; Mon, 30 Mar 2020 13:06:56 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:56062) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jIxsF-0001i8-HJ for qemu-devel@nongnu.org; Mon, 30 Mar 2020 13:06:55 -0400 Received: by mail-wm1-x343.google.com with SMTP id r16so2923744wmg.5 for ; Mon, 30 Mar 2020 10:06:55 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id 61sm24550033wrn.82.2020.03.30.10.06.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2020 10:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=mfnVD714sPEUmYFC+jPaoOlpvFWNuI8yQfnoLWvtCfw=; b=E3c4FUrbBuI/MXLpgfCXVYWmmmqP4DHNhJccTqwnbuMpX66Iyv04l77kxirnKAKQCc 3aD6Nh9UfpHb+dKVylZVbCd5hQ3FIr8VIpzlLRpCEwr72VwcPy7BPGrJBK5TDerhrM/T WrT1Ld/3EkIIinONtTtYRRerITgO7Z+fuGW/c6k7kyOWQOhWemAplSPPS98V7NDcz330 EFRjOTLLR9L6hf10L9gYXftEXnXKnM8XMBq8ok1MEm0NLipSGXxEDG+CgakYd/gNPtPQ 4I4pL5FzCHxLJf+9lJcAqOG82YJmJ2uldsQ083UuOEOV++wiqAjoIBGFn1f+3scOcsVe 0YYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=mfnVD714sPEUmYFC+jPaoOlpvFWNuI8yQfnoLWvtCfw=; b=piPZZf8aE1j5ccXAXzp4Q+ymE6ckaR5lcZXAMmRisiukSNNkC5umEyjN+ChoV7GOc5 vVprW5AHHx+Ig5HGADmt+VtJFGgQlBeXdQUmKW/+O/RxfkC2I1yvHdRfedn7E1CGTJwZ YTsDHKTaG/2yYhyKb4PJ7Ex1BuVNEbOq531YgxBH2CV6FTrnII5BOJfjfl+QKK6BxRSY +Wc+YcreRyYDyf1fUi8/lDMpe9RUXVZW5yUMZ9LWYpBsdaJFKCMxBjgZm26lzALMey1D mYys9otFpPbyQ4G8hj2VyZQJweiHXcj3FNdd+KbW2rvI5tc35Q8dmX5bP8vCxhaSFXi7 bscw== X-Gm-Message-State: ANhLgQ3/VgO9Vx/KzHOyMrPLxytA4SIx/LDF7WO5EmnmxslONxaCxeR3 MGKJaClIMJBjQHOE2c80gEsrOw== X-Google-Smtp-Source: ADFU+vtLyKOtAmUvXrJIhySVfmda1r2Fq5UxyNY89KoYDpfVO5sP6wlNgHdVxURDm5AVJXL8cK5tiA== X-Received: by 2002:a1c:9658:: with SMTP id y85mr245194wmd.63.1585588013996; Mon, 30 Mar 2020 10:06:53 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH for-5.0] target/arm: PSTATE.PAN should not clear exec bits Date: Mon, 30 Mar 2020 18:06:51 +0100 Message-Id: <20200330170651.20901-1-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::343 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Our implementation of the PSTATE.PAN bit incorrectly cleared all access permission bits for privileged access to memory which is user-accessible. It should only affect the privileged read and write permissions; execute permission is dealt with via XN/PXN instead. Fixes: 81636b70c226dc27d7ebc8d Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- Compare the pseudocode AArch64.CheckPermission(). --- target/arm/helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 163c91a1ccd..ed7eb8ab54e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -10025,9 +10025,11 @@ static int get_S1prot(CPUARMState *env, ARMMMUIdx = mmu_idx, bool is_aa64, prot_rw =3D user_rw; } else { if (user_rw && regime_is_pan(env, mmu_idx)) { - return 0; + /* PAN forbids data accesses but doesn't affect insn fetch */ + prot_rw =3D 0; + } else { + prot_rw =3D simple_ap_to_rw_prot_is_user(ap, false); } - prot_rw =3D simple_ap_to_rw_prot_is_user(ap, false); } =20 if (ns && arm_is_secure(env) && (env->cp15.scr_el3 & SCR_SIF)) { --=20 2.20.1