From patchwork Mon Jan 15 20:15:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 188330 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2614:b0:101:6a76:bbe3 with SMTP id mm20csp1925989dyc; Mon, 15 Jan 2024 12:18:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IHC8ivewZLBwVGUgr9ihDPRrcfNNanZ6R4f/OJG3YVLrFMuiVij2RCj0mretZNSY2cN0yi9 X-Received: by 2002:a0c:f20e:0:b0:680:f9ab:9f8f with SMTP id h14-20020a0cf20e000000b00680f9ab9f8fmr7216927qvk.22.1705349882102; Mon, 15 Jan 2024 12:18:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705349882; cv=none; d=google.com; s=arc-20160816; b=X67JOAREMq+oUUtmH9ZhN2JwPumJIiSttxvTj6DVm3xO87nCFk1yyJqTdSDIoJOngV grfr9EV+NofIM+qLoZIinldrRZYb3mLJNtlBFU+H37SjgAWUnFSJD8dCnd8VrzafhpMo t0scr3OSVo0K8jq15hUTH9C/p1RV3kiOqbVe9iv3fIaJzBSyrrAAKs++2k0aS0K7F2Qm uXhGbVhNhANmYTzjCF2n7360iQ7dcJVKVJEHBEL/wxi9N5MLz5nhPAuGAFDsqW6oQ2zk OB0VArFcuex1dgp0Gp6epJNeZzfmAAgVXx7taO/sV32Cu3mhPJV7zq07PVmhu0qnGVkx gWww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:message-id:content-transfer-encoding:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:subject:date :from:dkim-signature; bh=mnQ1S7ZKfjVMe++QcresmVxSypwCcImo+IlE0oxSslw=; fh=pccUqyzt6mbla/l8qdujPmlyOPqLwY6mHsRKZ7bqcZ0=; b=TfiDhy+GNPEO08XtR1M0SPS3TBOV0kdWSc3MKJXdHXuHpaxI+Skq7yALg+6f/o7V82 Z/Ck6vrN5WXGp7bmNSwB6nl9U/ai3tksfFh0R9dCxi9u+TneHUc2GlO7us56dhCiLCur 6BPqYW7ScCRln81/vhZfpAzoXwZI6lq3lJSYLUjzIliNvelL70ToLa8A1lpufKrUFs7n KdCMWnuskQzmjG5TCtYHMDTaNoJ9LCYycgXC5FLJ1B1MQzVr9KlcHCOoewzIrLbaHfdD bs88uXliE7AncCmoEgDamm3emenGPulEt3PKjSLPUk4PhtwQvkpO46P0jYTMKJtVInUI Es0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=oPqEnLF5; spf=pass (google.com: domain of linux-kernel+bounces-26471-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-26471-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id x9-20020a0cc509000000b0067f9703900csi8352537qvi.375.2024.01.15.12.18.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jan 2024 12:18:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-26471-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=oPqEnLF5; spf=pass (google.com: domain of linux-kernel+bounces-26471-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-26471-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id CC1871C22145 for ; Mon, 15 Jan 2024 20:18:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 505A6199B9; Mon, 15 Jan 2024 20:17:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oPqEnLF5" 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 9DC4518EB2; Mon, 15 Jan 2024 20:17:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4E72C433C7; Mon, 15 Jan 2024 20:17:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705349866; bh=hbvF2zJNkvnNPZrMPX0XPRUfiPsnEZS1lIR4xv3NkoU=; h=From:Date:Subject:To:Cc:From; b=oPqEnLF5Hexfow5DJQAq4T/eH1P+1dujL4Tlv5skvCXd7yDnG3IjP2hKFqspl/85x DzLAqlxJRXoiZQTuG0Tg6stu6PWVrFQNeITf9wAapW7GNZNCfDp8Mh38W3WGc89HHz /zP6pddK5st4IMmlsqq8Y/2105eKYOo6hzcVofk1qP9QEcvAJzbW1PLgxcx8t9Th9b r85jhp4KW0uOALQm04tiuBBZiPcdQgT/2jXZ2TTz7GgQClVVQHxYKE1srm5vrqFm0x kQoTvM4CPOSnFUqUsfCN8RsOpkok7s7wjsmTGJYFxWqkk9ZujOdvAqANKI135+NRPk YnDkdJAARAcFg== From: Mark Brown Date: Mon, 15 Jan 2024 20:15:46 +0000 Subject: [PATCH] arm64/sme: Always exit sme_alloc() early with existing storage Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240115-arm64-sme-flush-v1-1-7472bd3459b7@kernel.org> X-B4-Tracking: v=1; b=H4sIAHGSpWUC/x3MTQqAIBBA4avErBtQkaCuEi1SxxzoD4ciCO+et PwW770glJkEhuaFTDcLH3uFbhvwad4XQg7VYJSxSmuDc946i7IRxvWShKp3wVvlnI0eanVmivz 8x3Eq5QOsnnR1YQAAAA== To: Catalin Marinas , Will Deacon Cc: Dave Martin , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Mark Brown , stable@vger.kernel.org X-Mailer: b4 0.13-dev-5c066 X-Developer-Signature: v=1; a=openpgp-sha256; l=1379; i=broonie@kernel.org; h=from:subject:message-id; bh=hbvF2zJNkvnNPZrMPX0XPRUfiPsnEZS1lIR4xv3NkoU=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBlpZLnCdbCdkfdcefQ47pJjfDfPa6LkOOGHaTIu1aI QVlccIeJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZaWS5wAKCRAk1otyXVSH0AKNB/ 4+VX/uyNw6PWsdrgvLLVtIVBln/gopyMmLZWzHYQOqOpAtlmvOUyeZc8TB/bfTLBSOuvtmeQszlGGw Mk/7SGEkxrRVo0wVNfM2R5/sH+dIb1+fZ3EtM63SRKsO6nUTxKiXb5tAyng6HzyB/kwrHSwd4ZwA/2 YI8ACoXNvV5R2cu7qRYhnzI0GOa2CxqhSam0KXFvTvb9ST/LzmAc0qYwppCAvRCacZPG8mPEW7/bsp wH+6MEL2sRYseLh8np2x5mT03Dico0+/yRgGekjLn5/wB1UYw+O0piMgpgJ+Sextu8dj/pqvZsyXz+ TleshIECm9xi+IYUEFp4LTFcB33EcR X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788188957780454484 X-GMAIL-MSGID: 1788188957780454484 When sme_alloc() is called with existing storage and we are not flushing we will always allocate new storage, both leaking the existing storage and corrupting the state. Fix this by separating the checks for flushing and for existing storage as we do for SVE. Callers that reallocate (eg, due to changing the vector length) should call sme_free() themselves. Fixes: 5d0a8d2fba50 (arm64/ptrace: Ensure that SME is set up for target when writing SSVE state) Signed-off-by: Mark Brown Cc: --- arch/arm64/kernel/fpsimd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- base-commit: 0dd3ee31125508cd67f7e7172247f05b7fd1753a change-id: 20240112-arm64-sme-flush-09bdc40bb4fc Best regards, diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index 1559c706d32d..7363f2eb98e8 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -1245,8 +1245,10 @@ void fpsimd_release_task(struct task_struct *dead_task) */ void sme_alloc(struct task_struct *task, bool flush) { - if (task->thread.sme_state && flush) { - memset(task->thread.sme_state, 0, sme_state_size(task)); + if (task->thread.sme_state) { + if (flush) + memset(task->thread.sme_state, 0, + sme_state_size(task)); return; }