From nobody Mon Dec 1 22:36:22 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A986D531 for ; Sat, 29 Nov 2025 00:48:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764377339; cv=none; b=uLyT99D2I34jrV8g8OkTyG2l/xJS3IAMyOnhrmcdz/2/+V0b0DxwI5oAgb+KOFcESSci1EYdg1fOAkQt8B/G38bmmuCC3VD+UGNlfaqKQzpnrIyEZCcA8QPO02XMFgLUcgtrIhy+u44BULUP3hYrMzCgWPnmuzGNMSXER3wM2mU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764377339; c=relaxed/simple; bh=nEUcoR9iWdz6yB51JHK9UPbmFj+a6cm+4UL+mbMBL+k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=X0fEN8T+VAkSDj7YAnqY4AHOZsm4z4CoPvphBGhc4M364cIo9zhzplXUAqholZ5rfFN3KDTOkoXjCZa9eAeC+RPlR1OpcmTkBAxI5fyAFfABdK/dn+5eoZz/S8+bAOR/wKTm2D7u34sMsFt6tsnjIydW7AoWS2yuHCSPDYPNVMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bvgjXRuO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bvgjXRuO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8C9BFC4CEF1; Sat, 29 Nov 2025 00:48:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764377338; bh=nEUcoR9iWdz6yB51JHK9UPbmFj+a6cm+4UL+mbMBL+k=; h=From:Date:Subject:To:Cc:From; b=bvgjXRuOqTFYd/uQqWWs6mMAbpWjCkRzy0di1Un3k3130x665YYKYh25718NHgrzv iBOYrzYGScZK0yhhlbEEhzhtZKX+u96PkJA3F/nWQDRgCWaD6PpxJFcQIUB0fw/hma 2kLbb8tc1fW4KTh5Wt/TUkrwS8wN8heawYLBIGg+0wDT4m+FQNi5ncd2mHRCKv4qtR ReGvkRHunY6nzwgCKPp7rvwX+9g8Z9bAmrnUwmbzrXXNzv8KLrk+uRrt4jxaJvhFSG oGPVFdb/+uu1M+sgVJJKbD9h4XWLBYZL3+xwkLjWJCTtjhpRkIqZp/r7D/wJgDA52h 7J5JKeDn3uFqw== From: Mark Brown Date: Sat, 29 Nov 2025 00:48:45 +0000 Subject: [PATCH] arm64/gcs: Flush the GCS locking state on exec Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251129-arm64-gcs-flush-lock-v1-1-902b3ba6f39d@kernel.org> X-B4-Tracking: v=1; b=H4sIAO1CKmkC/x3MTQqEMAxA4atI1gZspop6FXHRqakGf2lQBsS7T 3H5Ld67QTkKK7TZDZEvUdm3BJNn4Ce3jYwyJAMVVBpDNbq4VhZHrxiWUydcdj+jqT7svo0nChZ SekQO8nu3Xf88f8bIUBRmAAAA X-Change-ID: 20251128-arm64-gcs-flush-lock-163eab9c22f4 To: Catalin Marinas , Will Deacon , Thiago Jung Bauermann Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Yury Khrustalev , Mark Brown X-Mailer: b4 0.15-dev-88d78 X-Developer-Signature: v=1; a=openpgp-sha256; l=1149; i=broonie@kernel.org; h=from:subject:message-id; bh=nEUcoR9iWdz6yB51JHK9UPbmFj+a6cm+4UL+mbMBL+k=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBpKkL4DIiz6bVybHOUsOHJg9zsT0j7sck6+H+O4 fnymV7fmF6JATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCaSpC+AAKCRAk1otyXVSH 0Au6CACA/pa8ugnkCwCHSsKjDC8M5nK8giyylPWOuZLc/23z1cDZhmnJ3rIl+6B0C0o5+GpDqT4 pvL7cQm6AVE1seRok97UUXWpT4SVqZO9zeyl0Noj/zBdO5ZFw6z8nAeqjppL7PABGUTuhotL5lE JwI2pUUfvAJd3OvIW7MOohrtW7UUzacnTr9RtY1UlVDKSFRbcDrs3btfPi78NVUgdn17hAwTEAW Fv/j6pqe3XjAILojfzHT6/+WYruKbz3z+kyOb1RQ2Hr052ktvxAihaQzi77lWXt4lVZ7YT2Lzzm ofJfe3Kj/h4MW3Z2cyS54KGowfEolYwc4PZKR4Su2iSxzMAU X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB When we exec a new task we forget to flush the set of locked GCS mode bits. Since we do flush the rest of the state this means that if GCS is locked the new task will be unable to enable GCS, it will be locked as being disabled. Add the expected flush. Fixes: fc84bc5378a8 ("arm64/gcs: Context switch GCS state for EL0") Reported-by: Yury Khrustalev Signed-off-by: Mark Brown Tested-by: Yury Khrustalev --- arch/arm64/kernel/process.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index fba7ca102a8c..489554931231 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -292,6 +292,7 @@ static void flush_gcs(void) current->thread.gcs_base =3D 0; current->thread.gcs_size =3D 0; current->thread.gcs_el0_mode =3D 0; + current->thread.gcs_el0_locked =3D 0; write_sysreg_s(GCSCRE0_EL1_nTR, SYS_GCSCRE0_EL1); write_sysreg_s(0, SYS_GCSPR_EL0); } --- base-commit: ac3fd01e4c1efce8f2c054cdeb2ddd2fc0fb150d change-id: 20251128-arm64-gcs-flush-lock-163eab9c22f4 Best regards, -- =20 Mark Brown