From nobody Mon Feb 9 16:51:14 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 800081A2C04; Sun, 4 May 2025 23:32:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746401544; cv=none; b=oHf7TbrKxblSGq561G01P9WCro1aPjnKDG5wxbHBdCZ8g/lFtgHExFQ19rnvaMjwlWOJH//rZ7S98f/E/b/3BZG/QncHh9ps2hCGK8ECORcridxRnwviU90dGCyc/VHgZgfe0R8o/9E8cFF3k7LjKHhsvjMhvRhp4hVahRnbZC8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746401544; c=relaxed/simple; bh=J7s8OIjWZ4YaXdyjZT+i+XxgiSVNcChkoHdKGE5I9qI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PwIghHeXXPHPl7d57exczXvPb9xRaJIE4OKm7cEH/fmlz6fe8kFoMs5D7b/L17eTCc5eCKeDCVvTQym3ArMm9696QeRhfggqX5D2ej8awLQVNN2ZiiBrrXPfOLHwvH42TE8lfSBiopXfBktZmG/2UNMYMfmeKrWcOodBJqQxfiU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4825B1063; Sun, 4 May 2025 16:32:07 -0700 (PDT) Received: from u200865.usa.arm.com (usa-sjc-mx-foss1.foss.arm.com [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F137B3F58B; Sun, 4 May 2025 16:32:15 -0700 (PDT) From: Jeremy Linton To: linux-trace-kernel@vger.kernel.org Cc: linux-perf-users@vger.kernel.org, mhiramat@kernel.org, oleg@redhat.com, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com, thiago.bauermann@linaro.org, broonie@kernel.org, yury.khrustalev@arm.com, kristina.martsenko@arm.com, liaochang1@huawei.com, catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jeremy Linton Subject: [PATCH v3 1/7] arm64/gcs: task_gcs_el0_enable() should use passed task Date: Sun, 4 May 2025 18:31:57 -0500 Message-ID: <20250504233203.616587-2-jeremy.linton@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250504233203.616587-1-jeremy.linton@arm.com> References: <20250504233203.616587-1-jeremy.linton@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Mark Rutland noticed that the task parameter is ignored and 'current' is being used instead. Since this is usually what its passed, it hasn't yet been causing problems but likely will as the code gets more testing. But, once this is fixed, it creates a new bug in copy_thread_gcs() since the gcs_el_mode isn't yet set for the task before its being checked. Move gcs_alloc_thread_stack() after the new task's gcs_el0_mode initialization to avoid this. Fixes: fc84bc5378a8 ("arm64/gcs: Context switch GCS state for EL0") Signed-off-by: Jeremy Linton Reviewed-by: Mark Brown --- arch/arm64/include/asm/gcs.h | 2 +- arch/arm64/kernel/process.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/gcs.h b/arch/arm64/include/asm/gcs.h index f50660603ecf..5bc432234d3a 100644 --- a/arch/arm64/include/asm/gcs.h +++ b/arch/arm64/include/asm/gcs.h @@ -58,7 +58,7 @@ static inline u64 gcsss2(void) =20 static inline bool task_gcs_el0_enabled(struct task_struct *task) { - return current->thread.gcs_el0_mode & PR_SHADOW_STACK_ENABLE; + return task->thread.gcs_el0_mode & PR_SHADOW_STACK_ENABLE; } =20 void gcs_set_el0_mode(struct task_struct *task); diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 42faebb7b712..68b7021cda77 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -305,13 +305,13 @@ static int copy_thread_gcs(struct task_struct *p, p->thread.gcs_base =3D 0; p->thread.gcs_size =3D 0; =20 + p->thread.gcs_el0_mode =3D current->thread.gcs_el0_mode; + p->thread.gcs_el0_locked =3D current->thread.gcs_el0_locked; + gcs =3D gcs_alloc_thread_stack(p, args); if (IS_ERR_VALUE(gcs)) return PTR_ERR((void *)gcs); =20 - p->thread.gcs_el0_mode =3D current->thread.gcs_el0_mode; - p->thread.gcs_el0_locked =3D current->thread.gcs_el0_locked; - return 0; } =20 --=20 2.49.0