From nobody Sat Oct 4 03:15:51 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 DCB2825A347; Wed, 20 Aug 2025 18:04:25 +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=1755713066; cv=none; b=kAhx5IlS3IqrqKAD45GocktkVg3fXNyN3xYIrSWzjAm1l4BWMm+7A3vU9YNEXAzbyT4ZMWYJOTOXOlJkvxptHD/thQPicz6qcHxFS9RZMQ/fmXhDWfhjAXjdj9aUvN9z4v6GyFmTMOKQ/EpMt3gbmPsMJfz0DK39+aZwpE80ttY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755713066; c=relaxed/simple; bh=afU/A3StCx9YLGmfDh35NaMhlfdeBazTCAoTQ4T0M/w=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=g14qGDLa1A+hmcfkA4ABk/A48ltI1AbOJbNOqce+f86ZdtfejDoH0YA4ohUxCXZmHXQUSxAQIMxvMdN8RyXd3ngf4PQZz8duJ200n4AsQc4fLmRlPx4RfUWhZt2b7EVyvRAZV5gdTT68EvFiheT8JCTe2djVtYAPXXgdJvfZ7as= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tRqC8vig; 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="tRqC8vig" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 838E4C4CEE7; Wed, 20 Aug 2025 18:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755713065; bh=afU/A3StCx9YLGmfDh35NaMhlfdeBazTCAoTQ4T0M/w=; h=Date:From:To:Cc:Subject:References:From; b=tRqC8vig5sCZZufsOzEnJfB0XTDyy5Lc7IsQLCuOKecptdLxQBL1PQrImuvuvUPW6 SXoLkD/lM+4vLqESWqm7FLBOqlocq8LWiQrfLRQB1z5doPEonA6HLkQFDEeOYmt4rf /c81aPdAHx1eLIvOngWy2nLt3IlN3vAhX9QZYQBOX9oSPWSutRfgXuTcdQVZEq1G54 4M1lDGxVsufRSWb1i4Prob77dymt6s5Iz1mniEes+o0tesdl70sKn9PsBYxhdo5alb BseetJhCaM8bz+JbKmVt+6DTiuf5kM9hnyHDVzD/yx4kjfIcGLI8SbpCI9tF434WZH flE6Mfv81CFeQ== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1uonAi-00000000rtG-1i0V; Wed, 20 Aug 2025 14:04:28 -0400 Message-ID: <20250820180428.259565081@kernel.org> User-Agent: quilt/0.68 Date: Wed, 20 Aug 2025 14:03:39 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , Thomas Gleixner , Namhyung Kim , Alexei Starovoitov , Josh Poimboeuf Subject: [RESEND][PATCH 1/5] perf: Remove get_perf_callchain() init_nr argument References: <20250820180338.701352023@kernel.org> 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" From: Josh Poimboeuf The 'init_nr' argument has double duty: it's used to initialize both the number of contexts and the number of stack entries. That's confusing and the callers always pass zero anyway. Hard code the zero. Acked-by: Namhyung Kim Acked-by: Alexei Starovoitov Signed-off-by: Josh Poimboeuf Signed-off-by: Steven Rostedt (Google) --- include/linux/perf_event.h | 2 +- kernel/bpf/stackmap.c | 4 ++-- kernel/events/callchain.c | 12 ++++++------ kernel/events/core.c | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index bfbf9ea53f25..fd1d91017b99 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1719,7 +1719,7 @@ DECLARE_PER_CPU(struct perf_callchain_entry, perf_cal= lchain_entry); extern void perf_callchain_user(struct perf_callchain_entry_ctx *entry, st= ruct pt_regs *regs); extern void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, = struct pt_regs *regs); extern struct perf_callchain_entry * -get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool us= er, +get_perf_callchain(struct pt_regs *regs, bool kernel, bool user, u32 max_stack, bool crosstask, bool add_mark); extern int get_callchain_buffers(int max_stack); extern void put_callchain_buffers(void); diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c index 3615c06b7dfa..ec3a57a5fba1 100644 --- a/kernel/bpf/stackmap.c +++ b/kernel/bpf/stackmap.c @@ -314,7 +314,7 @@ BPF_CALL_3(bpf_get_stackid, struct pt_regs *, regs, str= uct bpf_map *, map, if (max_depth > sysctl_perf_event_max_stack) max_depth =3D sysctl_perf_event_max_stack; =20 - trace =3D get_perf_callchain(regs, 0, kernel, user, max_depth, + trace =3D get_perf_callchain(regs, kernel, user, max_depth, false, false); =20 if (unlikely(!trace)) @@ -451,7 +451,7 @@ static long __bpf_get_stack(struct pt_regs *regs, struc= t task_struct *task, else if (kernel && task) trace =3D get_callchain_entry_for_task(task, max_depth); else - trace =3D get_perf_callchain(regs, 0, kernel, user, max_depth, + trace =3D get_perf_callchain(regs, kernel, user, max_depth, crosstask, false); =20 if (unlikely(!trace) || trace->nr < skip) { diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c index 6c83ad674d01..b0f5bd228cd8 100644 --- a/kernel/events/callchain.c +++ b/kernel/events/callchain.c @@ -217,7 +217,7 @@ static void fixup_uretprobe_trampoline_entries(struct p= erf_callchain_entry *entr } =20 struct perf_callchain_entry * -get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool us= er, +get_perf_callchain(struct pt_regs *regs, bool kernel, bool user, u32 max_stack, bool crosstask, bool add_mark) { struct perf_callchain_entry *entry; @@ -228,11 +228,11 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr,= bool kernel, bool user, if (!entry) return NULL; =20 - ctx.entry =3D entry; - ctx.max_stack =3D max_stack; - ctx.nr =3D entry->nr =3D init_nr; - ctx.contexts =3D 0; - ctx.contexts_maxed =3D false; + ctx.entry =3D entry; + ctx.max_stack =3D max_stack; + ctx.nr =3D entry->nr =3D 0; + ctx.contexts =3D 0; + ctx.contexts_maxed =3D false; =20 if (kernel && !user_mode(regs)) { if (add_mark) diff --git a/kernel/events/core.c b/kernel/events/core.c index ea357044d780..bade8e0fced7 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8210,7 +8210,7 @@ perf_callchain(struct perf_event *event, struct pt_re= gs *regs) if (!kernel && !user) return &__empty_callchain; =20 - callchain =3D get_perf_callchain(regs, 0, kernel, user, + callchain =3D get_perf_callchain(regs, kernel, user, max_stack, crosstask, true); return callchain ?: &__empty_callchain; } --=20 2.50.1 From nobody Sat Oct 4 03:15:51 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 109F9274FDB; Wed, 20 Aug 2025 18:04:25 +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=1755713066; cv=none; b=tR8mmKgm3P3AzdqpG3MzzIjS5TPg8ucKDqijXhh5eew48md7JmrOGlIv7CBQ8041GS+6swu3h2ntQmOO42UQ2tbqfKA05hrFl1NmXhW9uLUImkJL9ECvHuswFUEevvDU3rCg9yUqnkkaB/VDrKI0qxDI2zopilUc8SfOUGeadp0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755713066; c=relaxed/simple; bh=HYMOKiuvWZIARhalCg5/2gfv0nY8DKh4v2z1eG0URbY=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=AIkpgP+rzu1cYv3yAUrx0SYJ11xb0WMrhf1WRIk6FI0UJwQOJ1TsypRTOOcyNzYyS0bkTW5nonn07XnjIb4qb3aEgqyi6Qj0dVVIp3pOgnN1KVp+wZpuMaWsKl59Vb1uqc9IBjSlNWmTCeEr9dlYLWSOpDSVOqxWW4DkEHd0AIM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aBr5Qv5v; 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="aBr5Qv5v" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C624C116B1; Wed, 20 Aug 2025 18:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755713065; bh=HYMOKiuvWZIARhalCg5/2gfv0nY8DKh4v2z1eG0URbY=; h=Date:From:To:Cc:Subject:References:From; b=aBr5Qv5vT1iNhFJiG7N5rCYu8Kp8kM11pmZdUNTOBrigBC3BqfCN/Q6wDduUItNA+ VdaP3e2afrpVVazDuFgdrBkwgrkJYcd3FWE3yhJ2t/uxaw9XdIXR+DpR1TshenV5fo SvbDgxXCLbJ83VvWqlcGOJSVR/fVGUCq+GG9JTOJ0m7uAREL1UOk7kuA6lZuQcZ+IA QL9LTYJkQjSvbY/rDFD6wKQ6m/e5muBXcw87zAsO6xJiplPvX7ZX3qc12t/hNA6EfZ w4L45iYN9WtD633xOpN8a1gYDDdW6NbRnSpn3PF+MZDmDnOk8eY7h5vWyGkiV1W7wX dymHEPRfittaQ== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1uonAi-00000000rtk-2OyE; Wed, 20 Aug 2025 14:04:28 -0400 Message-ID: <20250820180428.426423415@kernel.org> User-Agent: quilt/0.68 Date: Wed, 20 Aug 2025 14:03:40 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , Thomas Gleixner , Josh Poimboeuf Subject: [RESEND][PATCH 2/5] perf: Have get_perf_callchain() return NULL if crosstask and user are set References: <20250820180338.701352023@kernel.org> 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" From: Josh Poimboeuf get_perf_callchain() doesn't support cross-task unwinding for user space stacks, have it return NULL if both the crosstask and user arguments are set. Signed-off-by: Josh Poimboeuf Signed-off-by: Steven Rostedt (Google) --- kernel/events/callchain.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c index b0f5bd228cd8..cd0e3fc7ed05 100644 --- a/kernel/events/callchain.c +++ b/kernel/events/callchain.c @@ -224,6 +224,10 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, = bool user, struct perf_callchain_entry_ctx ctx; int rctx, start_entry_idx; =20 + /* crosstask is not supported for user stacks */ + if (crosstask && user && !kernel) + return NULL; + entry =3D get_callchain_entry(&rctx); if (!entry) return NULL; @@ -240,7 +244,7 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, b= ool user, perf_callchain_kernel(&ctx, regs); } =20 - if (user) { + if (user && !crosstask) { if (!user_mode(regs)) { if (current->mm) regs =3D task_pt_regs(current); @@ -249,9 +253,6 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, b= ool user, } =20 if (regs) { - if (crosstask) - goto exit_put; - if (add_mark) perf_callchain_store_context(&ctx, PERF_CONTEXT_USER); =20 @@ -261,7 +262,6 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, b= ool user, } } =20 -exit_put: put_callchain_entry(rctx); =20 return entry; --=20 2.50.1 From nobody Sat Oct 4 03:15:51 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 56C1827CB04; Wed, 20 Aug 2025 18:04:26 +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=1755713066; cv=none; b=OyTeucoUVZk1iUO5GPDJPY9IIF/PyNOX3SSr7Ai7sgmitBPMyZaF1jUwU4mAMNUve7/v/t4YoM3JO55QAkqo+1yU3ED4r4PgmfHYIlQg+4UGTngCBe63AYSkw3OKNIo7yRxriZkJD4CQsTZh9nYisqwmruOl7JiWLMfCSNjuCZc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755713066; c=relaxed/simple; bh=mHbF4+q1ErlU4eyF5kJRPdSwNKPbHxuYmpdQVQQMw8g=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=b1WA55ZHI+JL5lJmCKZnzdBz83nPnzZ76Hd6vZamM6xSeGFT60PKgrI2IgfS4jEepYoy1e+qoILfkMWGRmTGYFzEDTvJF6AoZlMxIC7Aob13R3Kt+ke7Oo41xi9dl+xC3hU8f7jxk9pMOmUq+ZMfIbCt37NHsDiMJXJEGXoLDp8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YTppM/T/; 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="YTppM/T/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E0938C19425; Wed, 20 Aug 2025 18:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755713065; bh=mHbF4+q1ErlU4eyF5kJRPdSwNKPbHxuYmpdQVQQMw8g=; h=Date:From:To:Cc:Subject:References:From; b=YTppM/T/13nHLTQ91ofyhORHDnPvQsRC8jRl3ekOalM8sFzVZd5wOusRW00j5xv+Y 4Kr24xaVO0iNUhHviybMcLQKLsMPv+iKwC66i0emoKLeIa1+HktUXPggtyrnCfVlSn SjdAr+Zdb2nOhjhjpWf0/ksx0ptNStS1MzocRICVUvh3e6A7pt/fHRu5wFdohZsKXj YyDPSqi9Uu9eyuZCvdlmum9O3s3UJ4iXFDCt+h5GnQGIZhX+wz3SJbsA/gS6X3D1+i CL6RB289sYGP4cNVoucfaA1SIMxEZzD7pcLRFG5dMM/i5EjsD6JALTBN43xVn0FloD rrwL6+NMoAhuw== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1uonAi-00000000ruE-36PA; Wed, 20 Aug 2025 14:04:28 -0400 Message-ID: <20250820180428.592367294@kernel.org> User-Agent: quilt/0.68 Date: Wed, 20 Aug 2025 14:03:41 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , Thomas Gleixner Subject: [RESEND][PATCH 3/5] perf: Use current->flags & PF_KTHREAD|PF_USER_WORKER instead of current->mm == NULL References: <20250820180338.701352023@kernel.org> 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" From: Steven Rostedt To determine if a task is a kernel thread or not, it is more reliable to use (current->flags & (PF_KTHREAD|PF_USER_WORKERi)) than to rely on current->mm being NULL. That is because some kernel tasks (io_uring helpers) may have a mm field. Link: https://lore.kernel.org/linux-trace-kernel/20250424163607.GE18306@noi= sy.programming.kicks-ass.net/ Link: https://lore.kernel.org/all/20250624130744.602c5b5f@batman.local.home/ Signed-off-by: Steven Rostedt (Google) --- kernel/events/callchain.c | 6 +++--- kernel/events/core.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c index cd0e3fc7ed05..5982d18f169b 100644 --- a/kernel/events/callchain.c +++ b/kernel/events/callchain.c @@ -246,10 +246,10 @@ get_perf_callchain(struct pt_regs *regs, bool kernel,= bool user, =20 if (user && !crosstask) { if (!user_mode(regs)) { - if (current->mm) - regs =3D task_pt_regs(current); - else + if (current->flags & (PF_KTHREAD | PF_USER_WORKER)) regs =3D NULL; + else + regs =3D task_pt_regs(current); } =20 if (regs) { diff --git a/kernel/events/core.c b/kernel/events/core.c index bade8e0fced7..f880cec0c980 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7446,7 +7446,7 @@ static void perf_sample_regs_user(struct perf_regs *r= egs_user, if (user_mode(regs)) { regs_user->abi =3D perf_reg_abi(current); regs_user->regs =3D regs; - } else if (!(current->flags & PF_KTHREAD)) { + } else if (!(current->flags & (PF_KTHREAD | PF_USER_WORKER))) { perf_get_regs_user(regs_user, regs); } else { regs_user->abi =3D PERF_SAMPLE_REGS_ABI_NONE; @@ -8086,7 +8086,7 @@ static u64 perf_virt_to_phys(u64 virt) * Try IRQ-safe get_user_page_fast_only first. * If failed, leave phys_addr as 0. */ - if (current->mm !=3D NULL) { + if (!(current->flags & (PF_KTHREAD | PF_USER_WORKER))) { struct page *p; =20 pagefault_disable(); --=20 2.50.1 From nobody Sat Oct 4 03:15:51 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 56B6927C872; Wed, 20 Aug 2025 18:04:26 +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=1755713066; cv=none; b=pej3EcNZ7FUt/qLe3tRMQAMRscYLqewH7qZSw5Cg5c8qTZ9zFgNQLAcTAqyCwRjKkCXtLYhm02N/YkQGYtj3penqNC/iafa4OhKx5KukMiPMZeEdy02RXGdGX7ny3peJyZc77Ip3/TFiSudMVUl3Q1jt5J/iTCH071B2CcgyHbI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755713066; c=relaxed/simple; bh=Z7OW0MtPk3QyuYDWTldLdNqRvinvYbppGe1x78veJ7o=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=VrIrSudCur1/YDNDUbsFdaQsN8EjRaCeoACdDYBIf5GtZ7TNbxNvOTOTB/Pjdn9jH2OAq3fqFx4q5FBtRPxK2zzeKnIkUaByLtDGB+nVqwGPZ9WMkFk87DvG/SNLEr4+nmGecSRSyXUdo3r8QPRJjUWU8qAB2Kv122XM9MDLypY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Bpz84XRT; 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="Bpz84XRT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7130C2BC87; Wed, 20 Aug 2025 18:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755713066; bh=Z7OW0MtPk3QyuYDWTldLdNqRvinvYbppGe1x78veJ7o=; h=Date:From:To:Cc:Subject:References:From; b=Bpz84XRT5ALy8Djc7hyIAbaJz4C4p3b7eptwJeFpJifQhKrRcWsb1FsSSg0aRpSgv EWmyuUNEtrY/WPnPdgXEV8LoczYrNK/35PM/PozNS0eKxg0fxShtK8pA7PGP9ryl+v S1niuM5RS0ZVBZrZrr7kB/5iI6C6PEDIaxlNW/q+eS0HzCZ9EijH+YqWfPDDvCdQNw dIMGvR7Zxd+Q5O/6ZPfXrO3ou4HcCuHzNFLf83UT/TCGsw9DNRlZ2tCRWk6QeXmde5 bsC5DfUVCDhlnWA5g7jgeR/TyVUArLs1RK8Vc+430B/NIYExWSJ3tmE+dGqAHFfY8y uuQCXzO7PaRdg== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1uonAi-00000000rui-3p1h; Wed, 20 Aug 2025 14:04:28 -0400 Message-ID: <20250820180428.760066227@kernel.org> User-Agent: quilt/0.68 Date: Wed, 20 Aug 2025 14:03:42 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , Thomas Gleixner , Josh Poimboeuf Subject: [RESEND][PATCH 4/5] perf: Simplify get_perf_callchain() user logic References: <20250820180338.701352023@kernel.org> 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" From: Josh Poimboeuf Simplify the get_perf_callchain() user logic a bit. task_pt_regs() should never be NULL. Acked-by: Namhyung Kim Signed-off-by: Josh Poimboeuf Signed-off-by: Steven Rostedt (Google) --- kernel/events/callchain.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c index 5982d18f169b..808c0d7a31fa 100644 --- a/kernel/events/callchain.c +++ b/kernel/events/callchain.c @@ -247,21 +247,19 @@ get_perf_callchain(struct pt_regs *regs, bool kernel,= bool user, if (user && !crosstask) { if (!user_mode(regs)) { if (current->flags & (PF_KTHREAD | PF_USER_WORKER)) - regs =3D NULL; - else - regs =3D task_pt_regs(current); + goto exit_put; + regs =3D task_pt_regs(current); } =20 - if (regs) { - if (add_mark) - perf_callchain_store_context(&ctx, PERF_CONTEXT_USER); + if (add_mark) + perf_callchain_store_context(&ctx, PERF_CONTEXT_USER); =20 - start_entry_idx =3D entry->nr; - perf_callchain_user(&ctx, regs); - fixup_uretprobe_trampoline_entries(entry, start_entry_idx); - } + start_entry_idx =3D entry->nr; + perf_callchain_user(&ctx, regs); + fixup_uretprobe_trampoline_entries(entry, start_entry_idx); } =20 +exit_put: put_callchain_entry(rctx); =20 return entry; --=20 2.50.1 From nobody Sat Oct 4 03:15:51 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 9653C27EFF1; Wed, 20 Aug 2025 18:04:26 +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=1755713066; cv=none; b=ioWsBX5bm1uge0WMWlhgMKH4ozk5VNeybRaVyAFdJtUz6VA5jzOlZ72rL9JfCXEZmCiCCEBUcr9B5mx2XY1WvRtscujuTIOmE3nVQ6LgF7t3Njt4EIsYz67gt9YHFq3AOakcEzdxG/W5LEjlZKyoylp3FTx88ESC6ZTv72VoPfU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755713066; c=relaxed/simple; bh=FD0EJ8+cUesEx3BIgE1WisKxGgEGkMQBMuyAb5sxtAg=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=eycpxz/bJGIIGLiYzqkFi39p4NSYqyI3AjVQRjyvkNIMNwg6jOFymLER1ftxgf76nyBwNX/UvRFCPJWv4cVRwoXYhkTYBn9ws0r2TbE0K32XJCiJ+RXLymbNbnVQS6lC8A6JNu2QfuQzvjESyvmN3WBAJrA8Vp230wg8EDieKf8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ngex5nso; 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="ngex5nso" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F845C116C6; Wed, 20 Aug 2025 18:04:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755713066; bh=FD0EJ8+cUesEx3BIgE1WisKxGgEGkMQBMuyAb5sxtAg=; h=Date:From:To:Cc:Subject:References:From; b=ngex5nsolHfM597TaDXyV3Bzqp8R9w2//2W5sYbpdX3JVGIMJouuIx7UgR6NfxNkb +7Uybuu76zqshglzV860PkAKGZ6C84oAr9fQLEZbR2s2qnviGirCGLVjh/+XQ05xdu lARbK1Fb+eRqDFHG6tUomMYr0dZiA0eDcFAZqaQOLNIWvLtBQXtpc5wQ1Jlzbg+iRe tZRg6ZMs+WTr2Dmy11sgvnO+UAnh7jD99X0JkZIOPcXJTGs1mvP8qB/mdJm5NCSk+h wceOdI3aQTpvbh0ht+q+6XOugFzOmbDmvx4qQIo9cVQq1Dk7lALJ3wJC1YT5dPs3// 8dFMPfe+IKHsw== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1uonAj-00000000rvC-0KK9; Wed, 20 Aug 2025 14:04:29 -0400 Message-ID: <20250820180428.930791978@kernel.org> User-Agent: quilt/0.68 Date: Wed, 20 Aug 2025 14:03:43 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , Thomas Gleixner , Josh Poimboeuf Subject: [RESEND][PATCH 5/5] perf: Skip user unwind if the task is a kernel thread References: <20250820180338.701352023@kernel.org> 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" From: Josh Poimboeuf If the task is not a user thread, there's no user stack to unwind. Signed-off-by: Josh Poimboeuf Signed-off-by: Steven Rostedt (Google) --- kernel/events/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index f880cec0c980..28de3baff792 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8198,7 +8198,8 @@ struct perf_callchain_entry * perf_callchain(struct perf_event *event, struct pt_regs *regs) { bool kernel =3D !event->attr.exclude_callchain_kernel; - bool user =3D !event->attr.exclude_callchain_user; + bool user =3D !event->attr.exclude_callchain_user && + !(current->flags & (PF_KTHREAD | PF_USER_WORKER)); /* Disallow cross-task user callchains. */ bool crosstask =3D event->ctx->task && event->ctx->task !=3D current; const u32 max_stack =3D event->attr.sample_max_stack; --=20 2.50.1